


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构二叉树(C+)【摘要】现实社会中的树 一一书籍的目录、任务大纲、家族族谱之类等等。人们要研究就必须能过将树正确的储存,如何存储又关系到实际的操作 树是否为空,在本学期学习的数据结 构的教材中允许树为空 【1】。因为树表现形式的是一种现实的结构,而o不是自然数.从直观上看树是分支关系定义的层次结构,其中树和二叉树是最常见的【关键词】数据结构;树;二叉树;遍历;探讨空间;1、二叉树1.1二叉树T是有限的结点的集合 (允许为空),或者由一个根结点 u以及分别称为左子 树和右子树的两棵互不相交的二叉树u(1)和u( 2)组成。若用n,n1和n2分别表示T, u(1)和u (2)的结点数,则有n
2、=1+ n1+n2 。u(1 )和u(2)有时分别称为T的第一和第二子树。在二叉树中,每个结点至多有两个孩子,并且有左、右之分。因此任一结点的孩子不外4种情况:没有孩子;只有一个左孩子;只有一个右孩子;有一个左孩子并且有一个右孩子。图1.1五种基本形态(其中 口 表示空)1.2 二叉树与度数不超过 2的树不同,与度数不超过2的有序树也不同。在有序树中,虽 然一个结点的孩子之间是有左右次序的,但若该结点只有一个孩子时,就无须区分其左右次序。而在二叉树中,即使是一个孩子也有左右之分。由图可见:(a)和(b)是两棵不冋的二叉树。虽然它们与普通的一棵树(作为无序树或有序图1。2a (不同的两颗二叉树)
3、图1。2b (普通的一棵树)树)很相似,但它们却不能等同于这棵普通的树。若将这 3棵树均看作是有序树,则它们就 是相同的了。所以二叉树和树尽管有很多相似 ,但是二叉树不是树的特殊情形。所以,二叉树是一种人们假设的一种现象 ,所以允许为空是无争议的二叉树是一种有序 的树,左边是孩子、右边是兄弟。其实可以看作不同的两棵树。做这个规定 ,正式因为人们 要赋予给孩子兄弟不同的意义。 通过这学期的学习发现了一个现象, 就是树并没有插入删除 操作。对于非线性的树结构,插入删除操作不在一定的法则规定下,是毫无意义的 因此, 只有在具体的应用中,才会有插入删除操作。2、特殊形态的二叉树2。1满二叉树 卬:一棵
4、高度为h> 0且有2h+1-1个结点的二叉树称为满二叉树。(如图3。1)图3.1(满二叉树)2。2完全二叉树 “:若一棵二叉树至多只有最下面的两层结点的度数小于2,并且最下面一层结点都集中在该层的最左边,则称这种二叉树为完全二叉树(如图3。2)图3.2(完全二叉树)3、二叉树的遍历以及实现(C+)3。1二叉树基本上有先序遍历、 中序遍历、后序遍历,最开始并不明白为什么有这么多, 到了后面才明白,这是不同的应用需要的。例如,删除二叉树,必须先删除左右子树,然后才能删除根节点,这时就要用后序遍历,而判断两个二叉树是否相等,只要子树根节点不同,那么就不等,显然这时要用先序遍历;3.1.1 前序
5、遍历public:void PreOrder(void (衣 visit) (T &data)= print) PreOrder(root, visit) ;private:void PreOrder(BTNode* p , void (*visit) (T data)if (p) visit(p>data);PreOrder(p->left, visit);PreOrder(p-right, visit);3。1.2 中序遍历public:void InOrder(void (visit) (T data) = print) InOrder(root, visit); p
6、rivate : void InOrder(BTNode* p , void (*visit ) (T &data)if (p) InOrder(pleft, visit) ;visit(p data);InOrder(p- > right, visit); 3。1。 3 后序遍历public:void PostOrder(void (visit) (T data) = print ) PostOrder(root, visit); private:void PostOrder(BTNode p, void (*visit)(T &data) )if ( p) PostO
7、rder(p->left, visit);PostOrder(p> right, visit ) ;visit (p->data);4、二叉树的顺序存储结构4.1 在一棵具有 n 个结点的近似满二叉树中,我们从树根起,自上到下,逐层从左到右给所有结点编号,就能得到一个足以反映整个二叉树结构的线性序列.所以,顺序存储结构是二叉树的一种特点,按照一定的顺序存储在特定的连续单元中。(如图 4.1)图4.1(完全二叉树的结点编号)我们将数组下标作为结点编号,就可将二叉树中所有结点的标号存储在一维数组中。(如图4.2)图4.2可以看到二叉树的这种表示方式下,各结点之间的逻辑关系是隐含表
8、示的。完全二叉树中,除最下面一层外,各层都充满了结点。除最底层外,每一层的结点个数恰好是上一层 结点个数的2倍。因此,从一个结点的编号就可推知其父亲,左孩子、右兄弟,等各结点的编号.假设对结点为i的二叉树有如下定义:1. 仅当i=1时,结点i为根结点;2. 当i1时,结点i的父结点为i/2;3. 结点i的左孩子结点为 2i;4. 结点i的右孩子结点为 2i+1 ;5. 当i为奇数且不为1时,结点i的左兄弟结点为i-1 ;6. 当i为偶数时,结点i的右兄弟结点为i+1。4。2但对于一般的二叉树,采用顺序存储时,为了能用结点在数组中的位置来表示结点 之间的逻辑关系,也必须按近似满二叉树的形式来存储
9、树中的结点。一个只有k个结点的右单枝树却需要 2k-1个结点的存储空间.假设结点为 3的右单二叉树,添上虚结点后,成为一棵近似满二叉树。(如图4。2)5、索化二叉树5。1当用二叉链表作为二叉树的存储结构时,因为每个结点中只有指向其左、右孩子结 点的指针,所以从任一结点出发只能直接找到该结点的左、右孩子。在一般情况下靠它 无法直接找到该结点在某种遍历序下的前驱和后继结点。如果在每个结点中增加指向其 前驱和后继结点的指针,将降低存储空间的效率。例:一棵中序线索二叉树如(图5.1):图5.1图5.2(线索链表)由图5。2可知:在二叉树的线索链表上增加了一个头结点,其LeftChild指针指向二叉树的
10、根结点,其 RightChild指针指向中序遍历时的最后一个结点.另外,二叉树中依中序列表的第一个结点的 LeftChild 指针,和最后一个结点的 RightChild 指针都指向头结点 .这 就像为二叉树建立了一个双向线索链表,既可从第一个结点起,顺着后继进行遍历,也可从最后一个结点起顺着前驱进行遍历。6、探讨线索化二叉树是否降低空间效率7.1 线索化二叉树提出的缘由: 第一,二叉树的叶子节点还有两个指针域没有用,可以节省内存。第二, 我们想用比较少的时间, 寻找二叉树某一个遍历线性序列的前驱或者后继。 当然, 这样的操作很频繁的时候,做这方面的改善才是有意义的 .7.2 证明:求遍历后的
11、线性序列的前驱和后继。7.2。1 先序线索化能依次找到后继 ,但是前驱需要求双亲; 中序线索化前驱和后继都不需 要求双亲 ,但是都不很直接; 后序线索化能依次找到前驱 ,但是后继需要求双亲。 可以看出, 线索化成中序是最佳的选择,基本上算是达到了要求。7。2.2 节省内存: 线索化增加了两个标志位, 但是这两个位怎么储存 ?即使是在支持位存 储的CPU上,也不能拿位存储器来存的,第一是因为结构体成员变量的内存地址是在连 续的一起的,第二是位存储器的存储数目是有限的。目前的计算机最少需要1 个字节来储存这两个标志位。而为了传输速度和内存移植,大部分的内存是要对齐的,这就导致 在内存中使用线索化二叉树根本就没节省内存。 假设把个内存空间用来储存双亲指针时, 带来的方便绝对不是线索化所能比
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 李老师不会做课件的原因
- 餐饮股东合作协议书范本与餐饮股东合作协议范本4篇
- 李清照正式课件
- 2025年盐城市中考英语试题卷(含答案)
- 家具体业生产安全培训课件
- 2025年碳纤维增强塑料项目申请报告模范
- 李树整形修剪课件
- 文档资金监管委托合同3篇
- 工程施工合同补充协议书6篇
- 2025年电子线圈设备项目规划申请报告
- 2025年本科院校团委笔试备考手册
- GB/T 45940-2025网络安全技术网络安全运维实施指南
- 敦煌课件讲解稿子
- 教育与宗教分离课件
- 2025年环境工程师初级职称考试试题及答案解析
- 眼科特检基础知识培训课件
- 高考历史一轮复习资料(人教版)专题二古代中国的农耕经济专题质量检测(A卷)
- 2025 年小升初沈阳市初一新生分班考试数学试卷(带答案解析)-(人教版)
- 统编版高中思想政治必修1第一课社会主义从空想到科学、从理论到实践的发展1.2科学社会主义的理论与实践 教学课件
- 摄影剪辑基本知识培训课件
- 高校学管中心面试真题与答案解析
评论
0/150
提交评论