- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二叉树操作概要
安徽省巢湖学院计算机与信息工程学院
课程设计报告
课程名称 《数据结构》
课题名称 二叉树操作
专 业 计算机科学与技术
班 级 10计本2班
学 号
姓 名 陶健
联系方式
指导教师 江家宝
20 11 年 12 月 29 日
目 录
1、数据结构课程设计任务书 1
1.1、题目 1
1.2、要求 1
2、总体设计 1
2.1、功能模块设计 1
3、详细设计
3.1、程序中所采用的数据结构及存储结构的说明 1
3.2、算法的设计思想 1
4、调试与测试: 3
4.1、调试方法与步骤:
4.2、测试结果的分析与讨论: 3
4.3、测试过程中遇到的主要问题及采取的解决措施: 6
5、时间复杂度的分析: 6
6、源程序清单和执行结果 6
7、C程序设计总结 25
8、致谢 26
9、参考文献 26
1、数据结构课程设计任务书
1.1、题目
二叉树操作
1.2、要求
1. 已知二叉树的后序、中序序列,恢复此二叉树;
2. 求二叉树高度、分支结点数和叶子结点数;
3.插入结点到指定位置、删除指定结点;
4.将二叉树中所有结点的左右子树交换。
5.对二叉树进行层序、非递归中序遍历。
2、总体设计
2.1、功能模块设计
根据课程设计题目的功能要求,各个功能模块的组成框图如下:
3.1、程序中所采用的数据结构及存储结构的说明
#includestdlib.h
#includestdio.h
typedef struct LNode{
struct LNode *lchild;
struct LNode *rchild;
char data;
}Tree,*Ptree;
3.2、算法的设计思想
已知二叉树的后序、中序序列,恢复此二叉树
比方说有这么个二叉树,如图:
对于这样一颗树,后序遍历和中序遍历得到的结点序列分别为:
后序:D E C B I G H F A ……………(式1)
中序:D C E B A G I F H ……………(式2)
后序和中序遍历满足的规则是:
后序:左-右-根
中序:左-根-右
所以,后序遍历的最后一个结点一定是整棵树的根结点即A
另外,(式2)中A的左边一定是A的左子树上的结点(因为只有左子树遍历结束了才会轮到A),同理(式2)中A的右边一定是右子树上的结点(只有A遍历过了才会轮到右子树),如果在(式2)中一个结点的左边结点(右边结点)为空或者是已经访问过的,则该结点只有左子树(右子树)
对于(式1)我们可以总结出相似的结论(自己总结)
我把我总结的算法思想写出来,理解下吧。
设某一个结点变量 N
初始化为后序遍历表中的最后一个结点(在这里N=A)
Function(结点 N)
{
If(N在(式2)的右子树=TRUE)
{
则N在(式1)中的前一个结点=N的右子树根结点
If(N在N在(式2)的左子树=TRUE)
{
则N在(式2)中的前一个结点=N的左子树根结点
递归function(N-Left)
}
递归function(N-Right)
}
Else if(N在(式2)的左子树=TRUE)
{
N在(式1)中的前一个结点=N的左子树根结点
递归function(N-Right)
}
return ..
}
求二叉树高度、分支结点数和叶子结点数
二叉树的深度(高度)和它的左、右子树深度之间的关系。从二叉树深度的定义可知,二叉树的深度应为其左、右子树深度的最大值加1。由此,需先分别求得左、右子树的深度,算法中“访问结点”的操作为:求得左、右子树深度的最大值,然后加 1。
一、叶子数=[n/2],(向上取整)
令度为0的结点数n0,度为1的结点数n1,度为2的结点数n2
则n=n0+n1+n2;
由二叉树性质三知:n2=n0-1;
带入得n=2*n0+n1-1;
由完全二叉树的定义可以看出,n1只可能取两个值0和1
所以有2*n0-1=n=2*n0
即n0-1/2=n/2=n0
由于n/2为整数,所以n0=[n/2],(向上取整)
二、分支结点数=[n/2],(向下取整)
由于分支结点数=n-n0
利用一的结
文档评论(0)