实验十--二叉树的基本操作.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

浙江大学城市学院实验报告

课程名称数据结构基础

实验项目名称实验十二叉树的基本操作

学生姓名专业班级学号

实验成绩指导老师(签名)日期

实验目的和要求

1、掌握二叉树的链式存储结构。

2、掌握在二叉链表上的二叉树操作的实现原理与方法。

3、进一步掌握递归算法的设计方法。

实验内容

1、建立头文件test10.h,在该文件中定义二叉树的链式存储结构,并编写二叉树的各种基本操作实现函数。同时建立一个验证操作实现的主函数文件test10.cpp,编译并调试程序,直到正确运行。注意:需要用到栈和队列的有关操作。

说明:二叉树的基本操作可包括:

(1)voidInitBTree(BTreeNode*BT)//初始化二叉树BT

(2)voidCreateBTree(BTreeNode*BT,char*a)

//根据字符串a所给出的广义表表示的二叉树建立二叉链表存储结构

(3)intEmptyBTree(BTreeNode*BT)

//检查二叉树BT是否为空,空返回1,否则返回0

(4)intDepthBTree(BTreeNode*BT)//求二叉树BT的深度并返回该值

(5)intFindBTree(BTreeNode*BT,ElemTypex)

//查找二叉树BT中值为x的结点,若查找成功返回1,否则返回0

(6)voidPreOrder(BTreeNode*BT)//先序遍历二叉树BT

(7)voidInOrder(BTreeNode*BT)//中序遍历二叉树BT

(8)voidPostOrder(BTreeNode*BT)//后序遍历二叉树BT

(9)voidLevelOrder(BTreeNode*BT)//按层次遍历二叉树BT

(10)voidPrintBTree(BTreeNode*BT)//输出二叉树BT

(11)voidClearBTree(BTreeNode*BT)//清除二叉树BT

2、以下内容为第二次实验完成:

(1)请编写函数实现中序遍历的非递归算法。将此函数输入到前述头文件test10.h中,并在主函数文件test10.cpp中增加测试语句测试这个函数的正确性。注意需要用到栈的有关操作。

提示:二叉树中序遍历的非递归算法就是运用栈这种数据结构将递归的中序遍历转换成非递归的中序遍历,采用的是间接转换方式。中序遍历非递归算法的N-S流程图如下:

注意:栈中存放的应该是指向结点的指针,即结点的地址,而不是结点的值。因为,只有根据结点的地址才能在二叉树中查找到该结点。

(2)完成以下算法的设计,并将这些函数输入到前述头文件test10.h中,在主函数文件test10.cpp中增加测试语句测试其正确性。

(a)将二叉树中的所有结点的左右子树进行交换,函数原型如下:

voidChangeBTree(BTreeNode*BT);

(b)统计二叉树中的所有结点数,函数原型如下:

intCountBTree(BTreeNode*BT);

(c)复制一棵二叉树,并返回复制得到的二叉树根结点指针,函数原型如下:

BTreeNode*CopyBTree(BTreeNode*BT);

(d)如果两棵二叉树具有相同的树型,则称它们是相似的。请编写函数实现判断两棵树是否相似。函数原型为:

intSimilarTrees(BTreeNode*BT1,BTreeNode*BT2)

(e)摘树叶:摘除一棵二叉树上的所有叶子结点后返回一棵新的二叉树。函数原型为:

BTreeNode*RemoveLeaves(BTreeNode*BT1)

3、填写实验报告,实验报告文件取名为report10.doc。

4、上传实验报告文件report10.doc、源程序文件test10.cpp及test10.h到Ftp服务器上(40:5000)自己的文件夹下。

三.函数的功能说明及算法思路

(包括每个函数的功能说明,及一些重要函数的算法实现思路)

函数功能说明:

(1)voidInitBTree(BTreeNode*BT

文档评论(0)

A女汉子~小郭 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档