收藏 分享(赏)

数据结构6-树和二叉树.ppt

上传人:scg750829 文档编号:8269936 上传时间:2019-06-17 格式:PPT 页数:26 大小:163KB
下载 相关 举报
数据结构6-树和二叉树.ppt_第1页
第1页 / 共26页
数据结构6-树和二叉树.ppt_第2页
第2页 / 共26页
数据结构6-树和二叉树.ppt_第3页
第3页 / 共26页
数据结构6-树和二叉树.ppt_第4页
第4页 / 共26页
数据结构6-树和二叉树.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、第6章 树和二叉树,树的定义和基本术语,树是 n (n0) 个结点(数据元素)的有限集。若n=0,集合为空树;若n0,则集合对应一棵非空树,它具有如下特点:(1) 树中有且仅有一个特定的称为根的结点;(2) 当n1时,根以外的其余结点可分为m 个 (m0)互不相交的有限集。这些有限集本身又是一棵树,是根的子树。(递归定义) 抽象数据类型树的定义:ADT Tree 树结构的其它表示形式:嵌套集合形式、广义表形式、凹入形式,树的结点包含一个数据元素和若干指向其子树的分支 结点的度:结点拥有的子树的数目 树的度:树中结点的度的最大值 叶子(终端结点):度为0的结点 非终端结点(分支结点):度不为0的

2、结点 结点间的关系:双亲、孩子、兄弟、祖先、子孙、堂兄弟等 树的深度(高度):树中结点的最大层次数(注:根为第一层,其孩子为第二层) 有序树和无序树:子树是否有次序 森林:m(m0)棵互不相交的树的集合,树的示例,A,B,C,D,G,F,E,H,I,J,二叉树,二叉树是另一种树形结构。它的特点是每个结点至多只有二棵子树(树中不存在度大于2的结点),并且子树有左右之分(有序树)。 抽象数据类型二叉树的定义:ADT BinaryTree 二叉树的五种基本形态:,二叉树的性质,性质1:二叉树的第i层上至多有2i-1个结点 性质2:深度为k的二叉树至多有2k -1个结点 性质3:对任何一棵二叉树T,如

3、果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1 性质4:具有n个结点的完全二叉树的深度为log2n+1 性质5:如果对一棵有n个结点的完全二叉树按层次从左到右依次编号(根结点编号为1),则对任一编号为i的结点(1in),其双亲编号为 i/2 ,其左孩子编号为2i,右孩子编号为2i+1(如果存在的话),完全二叉树的定义,由性质2,深度为k的二叉树至多有2k -1个结点,而结点数目达到最多的二叉树为满二叉树 对深度为k、结点数目为N(N= 2k -1 )的满二叉树按层次从左到右编号,则编号为1,2,N。而深度为k、结点数目为n (nN)的二叉树,当且仅当其每一结点的编号都与深度为k的

4、满二叉树中编号为1n的结点一一对应时,称之为完全二叉树 深度为k的完全二叉树中,1k-1层的结点数应达到最多,其余结点在第k层依次从左往右排,二叉树的存储结构,根据二叉树性质5,对完全二叉树可按结点编号将其存于一组地址连续的存储单元中,结点之间的关系也可通过存储位置反映,即采用顺序存储结构。其类型定义为:#define MAX-TREE-SIZE 100typedef Telemtype SqBiTreeMAX-TREE-SIZE ;/0 号单元存储根结点,编号为i的结点存于i-1号单元 对于一般二叉树,则应将其每个结点与完全二叉树上的结点相对应,虚设结点后顺序存储。但有时虚设结点数反而多于二

5、叉树的结点数。所以,一般二叉树不宜采用顺序存储结构,二叉树的链式存储结构,二叉树的二叉链表存储表示结点结构:类型定义:typedef struct bitnode TElemType data;struct bitnode *lchild, *rchild; BiTNode, *BiTree; 二叉树的三叉链表存储表示结点结构:,二叉树的遍历,遍历二叉树:按某种顺序对二叉树中每个结点访问,使每个结点均被访问到且只被访问一次 遍历方法(限定遍历时先左后右): 按根结点被访问的先后,分为先序、中序和后序三种遍历 按层次遍历二叉树,先序遍历二叉树的操作定义:若二叉树为空,则空操作;否则(1)访问根结

6、点;(2)先序遍历左子树;(3)先序遍历右子树。 中序遍历二叉树的操作定义:若二叉树为空,则空操作;否则(1)中序遍历左子树;(2)访问根结点;(3)中序遍历右子树。 后序遍历二叉树的操作定义:若二叉树为空,则空操作;否则(1)后序遍历左子树;(2)后序遍历右子树;(3)访问根结点。,例:二叉树的遍历,先序遍历序列:ABDGCEFIJ 中序序列:DGBAECIFJ 后序序列:GDBEIJFCA,A,B,C,D,G,F,E,I,J,递归的遍历算法,假设二叉树采用二叉链表表示,对树中结点进行打印输出的访问,则根据遍历操作的定义,可得如下先序遍历的递归算法:void PreOrderTranvers

7、e (BiTree t) if (t) printf (t-data); PreOrderTranverse (t-lchild);PreOrderTranverse (t-rchild); ,中序遍历的递归算法如下:void InOrderTranverse (BiTree t) if (t) InOrderTranverse (t-lchild);printf (t-data); InOrderTranverse (t-rchild); 后序遍历的递归算法如下:void PostOrderTranverse (BiTree t) if (t) PostOrderTranverse (t-l

8、child);PostOrderTranverse (t-rchild); printf (t-data); 由此可见,三种遍历算法的不同仅在于访问根结点的先后不同 递归的遍历算法的思想很重要,二叉树的建立就可按某种遍历顺序递归地来实现,非递归的遍历算法,递归函数在函数执行过程中直接调用本身,而且多层嵌套调用时,按照“后调用先返回”的原则,所以,为保证递归函数的正确执行,系统需设立一个“递归工作栈”来保存函数执行期间的数据(如函数的返回地址和参数等)。对于递归的遍历算法,也可以利用栈来实现其非递归化,从而得到非递归的遍历算法。具体的非递归遍历算法见P130P131。,线索二叉树,遍历二叉树是以

9、一定规则将二叉树中结点排列成一个线性序列,其实质是对一个非线性结构进行线性化操作。而在线性序列中,除第一个和最后一个结点外,每个结点只有唯一的前驱和后继。 如果在某次遍历过程中,记录下每个结点在该种遍历中的后继(或前驱),那么,在以后的遍历中就可“按图索骥”了。 在有n个结点的二叉树的二叉链表中,2n个指针中有n+1个空指针。现利用这些空指针来存储遍历过程中结点的前驱或后继。,现对二叉链表中的空指针域作如下规定:若结点的lchild为空,则令其指示结点的前驱;若rchild为空,则令其指示结点的后继。此种指针称为线索。 在如上规定情况下,为避免混淆,分清某一结点的指针到底是指向其孩子,还是线索

10、,就必须修改结点结构,再增加两个标志域ltag和rtag:如果指针指向其孩子,设标志域为0;如果指针为线索,设标志域为1。即得如下结点结构:,以这种结点结构构成的二叉链表叫做线索链表。加上线索的二叉树称为线索二叉树。对二叉树按某种次序遍历使其变为线索二叉树的过程叫做线索化。 线索化的过程即为在遍历过程中修改空指针的过程。所以,线索二叉树或线索链表必须指明是按哪种遍历次序得到的。 对于线索二叉树,无须栈的帮助即可实现其非递归的遍历算法。,树和森林,树的存储结构 双亲表示法 孩子表示法(包括孩子链表表示法) 孩子兄弟表示法 树、森林与二叉树的转换 利用树的孩子兄弟表示法和二叉树的二叉链表表示的相似

11、性 树和森林的遍历 树的先根、森林的先序遍历对应相应二叉树的先序遍历;树的后根、森林的中序遍历对应相应二叉树的中序遍历,赫夫曼树及其应用,赫夫曼树:又称最优树,是一类带权路径长度最短的树。本处讨论最优二叉树。 相关概念: 路径长度:结点间分支构成路径,其上的分支数目 树的路径长度:从树根到每个结点的路径长度之和 结点的带权路径长度:结点到树根之间的路径长度与结点上权的乘积 树的带权路径长度:树中所有叶子结点的带权路径长度之和,记为WPL= wk lk (k=1,2,n) 最优二叉树:n个叶子结点的权值分别为w1、w2、wn,由它们构造出的WPL最小的二叉树。,赫夫曼树的构造方法: 1. 根据给

12、定的n个权值w1、w2、wn构造n棵二叉树的集合F= T1、T2、Tn,其中每棵二叉树Ti中只有一权为wi的根结点,其左右子树为空。 2. 在F中选取两棵根结点的权值最小的树作为左右子树构造一新的二叉树,且置新的二叉树根结点的权值为其左右子树上根结点的权值之和。 3. 在F中删除这两棵树,同时将新得到的二叉树加入到F中。 4. 重复2、3,直到F中只含一棵树为止。即得所求。,例:假设n=8, w=5, 29, 7, 8, 14, 23, 3, 11, 按上述算法构造赫夫曼树的过程如下:1. 2. 3. 4.,5.6.,按上述算法构造赫夫曼树的结果如下:7.,赫夫曼树的应用赫夫曼编码 赫夫曼编码是一种前缀编码 前缀编码:为若干个字符设计不等长的编码,那么为了不对编码的理解产生二义,任一个字符的编码都不能是另一个字符编码的前缀,此种编码称为前缀编码。 例:见P148,上机实验二,以先序遍历方法建立二叉树的二叉链表表示,然后编写算法完成二叉树的先序、中序、后序等方法的遍历操作,并统计二叉树的总结点数和叶子结点数。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报