数据结构 第7章树形结构2.ppt
《数据结构 第7章树形结构2.ppt》由会员分享,可在线阅读,更多相关《数据结构 第7章树形结构2.ppt(129页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7 7章章 树形结构树形结构7.1 7.1 树的基本概念树的基本概念 7.2 7.2 二叉树概念和性质二叉树概念和性质7.3 7.3 二叉树存储结构二叉树存储结构7.4 7.4 二叉树的遍历二叉树的遍历7.57.5 二叉树的基本运算及其实现二叉树的基本运算及其实现7.6 7.6 二叉树的构造二叉树的构造7.8 7.8 哈夫曼树哈夫曼树 本章本章小结小结7.7 7.7 线索二叉树线索二叉树7.1 7.1 树的基本概念树的基本概念 7.1.1 7.1.1 树的定义树的定义 7.1.3 7.1.3 树的基本术语树的基本术语 7.1.2 7.1.2 树的表示树的表示7.1.4 7.1.4 树的性质
2、树的性质7.1.5 7.1.5 树的基本运算树的基本运算7.1.6 7.1.6 树的存储结构树的存储结构7.1.1 7.1.1 树的定义树的定义形式化定义:形式化定义:树树:TK,R。K是是包包含含n个个结结点点的的有有穷穷集集合合(n0),关系关系R满足以下条件满足以下条件:(1)有有且且仅仅有有一一个个结结点点k0K,它它对对于于关关系系R来来说说没有前驱结点没有前驱结点,结点结点k0称作树的根。称作树的根。(2)除除结结点点k0外外,K中中的的每每个个结结点点对对于于关关系系R来来说说都有且仅有一个前驱结点。都有且仅有一个前驱结点。(3)K中中每每个个结结点点对对于于关关系系R来来说说可
3、可以以有有多多个个后后继结点。继结点。递归定义:递归定义:树树是是由由n(n0)个个结结点点组组成成的的有有限限集集合合(记记为为T)。其其中中,如果如果n=0,它是一棵空树它是一棵空树,这是树的特例;这是树的特例;如如果果n0,这这n个个结结点点中中存存在在(有有仅仅存存在在)一一个个结结点点作作为为树树的的根根结结点点,简简称称为为根根(root),其其余余结结点点可可分分为为m(m0)个个互互不不相相交交的的有有限限集集T1,T2,Tm,其其中中每每一一棵棵子子集集本本身身又又是是一一棵棵符符合合本本定定义义的的树树,称称为为根根root的的子子树。树。7.1.2 7.1.2 树的表示树
4、的表示 (1)树树形形表表示示法法。这这是是树树的的最最基基本本的的表表示示,使使用用一一棵棵倒倒置置的的树树表表示示树树结结构构,非非常常直直观观和和形形象象。下下图图就就是是采用这种表示法。采用这种表示法。(2)文文氏氏图图表表示示法法。使使用用集集合合以以及及集集合合的的包包含含关关系系描描述述树树结结构构。下下图图就就是是树树的的文文氏氏图表示法。图表示法。(3)凹凹入入表表示示法法。使使用用线线段段的的伸伸缩缩描描述述树树结结构。下图是树的凹入表示法。构。下图是树的凹入表示法。(4)括括号号表表示示法法。将将树树的的根根结结点点写写在在括括号号的的左左边边,除除根根结结点点之之外外的
5、的其其余余结结点点写写在在括括号号中中并并用用逗号间隔来描述树结构。下图是树的括号表示法。逗号间隔来描述树结构。下图是树的括号表示法。7.1.3 7.1.3 树的基本术语树的基本术语1.结结点点的的度度与与树树的的度度:树树中中某某个个结结点点的的子子树树的的个个数数称称为为该该结结点点的的度度。树树中中各各结结点点的的度度的的最最大大值值称称为为树的度树的度,通常将度为通常将度为m的树称为的树称为m次树次树。2.分分支支结结点点与与叶叶结结点点:度度不不为为零零的的结结点点称称为为非非终终端端结结点点,又又叫叫分分支支结结点点。度度为为零零的的结结点点称称为为终终端端结结点点或或叶叶结结点点
6、。在在分分支支结结点点中中,每每个个结结点点的的分分支支数数就就是是该该结结点点的的度度。如如对对于于度度为为1的的结结点点,其其分分支支数数为为1,被被称称为为单单分分支支结结点点;对对于于度度为为2的的结结点点,其其分分支支数数为为2,被被称称为为双分支结点双分支结点,其余类推。其余类推。3.路路径径与与路路径径长长度度:对对于于任任意意两两个个结结点点ki和和kj,若若树树中中存存在在一一个个结结点点序序列列ki,ki1,ki2,kin,kj,使使得得序序列列中中除除ki外外的的任任一一结结点点都都是是其其在在序序列列中中的的前前一一个个结结点点的的后后继继,则则称称该该结结点点序序列列
7、为为由由ki到到kj的的一一条条路路径径,用用路路径径所所通通过过的的结结点点序序列列(ki,ki1,ki2,kj)表表示示这这条条路路径径。路路径径的的长长度度等等于于路路径径所所通通过过的的结结点点数数目目减减1(即即路路径径上上分分支支数数目目)。可可见见,路路径径就就是是从从ki出出发发“自自上上而而下下”到到达达kj所所通通过过的的树树中中结结点点序序列列。显显然然,从从树树的的根根结结点点到到树中其余结点均存在一条路径。树中其余结点均存在一条路径。4.孩孩子子结结点点、双双亲亲结结点点和和兄兄弟弟结结点点:在在一一棵棵树树中中,每每个个结结点点的的后后继继,被被称称作作该该结结点点
8、的的孩孩子子结结点点(或或子子女女结结点点)。相相应应地地,该该结结点点被被称称作作孩孩子子结结点点的的双双亲亲结结点点(或或父父母母结结点点)。具具有有同同一一双双亲亲的的孩孩子子结结点点互互为为兄兄弟弟结结点点。进进一一步步推推广广这这些些关关系系,可可以以把把每每个个结结点点的的所所有有子子树树中中的的结结点点称称为为该该结结点点的的子子孙孙结结点点,从从树树根根结结点点到到达达该该结结点的路径上经过的所有结点被称作该结点的点的路径上经过的所有结点被称作该结点的祖先结点祖先结点。5.结结点点的的层层次次和和树树的的高高度度:树树中中的的每每个个结结点点都都处处在在一一定定的的层层次次上上
9、。结结点点的的层层次次从从树树根根开开始始定定义义,根根结结点点为为第第1层层,它它的的孩孩子子结结点点为为第第2层层,以以此此类类推推,一一个个结结点点所所在在的的层层次次为为其其双双亲亲结结点点所所在在的的层层次次加加1。树树中中结点的最大层次称为结点的最大层次称为树的高度树的高度(或树的深度或树的深度)。6.有有序序树树和和无无序序树树:若若树树中中各各结结点点的的子子树树是是按按照照一一定定的的次次序序从从左左向向右右安安排排的的,且且相相对对次次序序是是不不能能随随意变换的意变换的,则称为则称为有序树有序树,否则称为否则称为无序树无序树。7.森森林林:n(n0)个个互互不不相相交交的
10、的树树的的集集合合称称为为森森林林。森森林林的的概概念念与与树树的的概概念念十十分分相相近近,因因为为只只要要把把树树的的根根结结点点删删去去就就成成了了森森林林。反反之之,只只要要给给n棵棵独独立立的的树树加加上上一一个个结结点点,并并把把这这n棵棵树树作作为为该结点的子树该结点的子树,则森林就变成了树。则森林就变成了树。7.1.4 7.1.4 树的性质树的性质性质性质1树中的结点数等于所有结点的度数加树中的结点数等于所有结点的度数加1。证证明明:根根据据树树的的定定义义,在在一一棵棵树树中中,除除树树根根结结点点外外,每每个个结结点点有有且且仅仅有有一一个个前前驱驱结结点点。也也就就是是说
11、说,每每个个结结点点与与指指向向它它的的一一个个分分支支一一一一对对应应,所所以以除除树树根根之之外外的的结结点点数数等等于于所所有有结结点点的的分分支支数数(度度数数),从从而而可可得得树树中中的结点数等于所有结点的度数加的结点数等于所有结点的度数加1。性性质质2度度为为m的的树树中中第第i层层上上至至多多有有mi-1个个结结点点,这这里应有里应有i1。证明证明(采用数学归纳法采用数学归纳法)对对于于第第一一层层,因因为为树树中中的的第第一一层层上上只只有有一一个个结结点点,即即整整个个树树的的根根结结点点,而而由由i=1代代入入mi-1,得得mi-1=m1-1=1,也也同同样得到只有一个结
12、点样得到只有一个结点,显然结论成立。显然结论成立。假假设设对对于于第第(i-1)层层(i1)命命题题成成立立,即即度度为为m的的树树中中第第(i-1)层层上上至至多多有有mi-2个个结结点点,则则根根据据树树的的度度的的定定义义,度度为为m的的树树中中每每个个结结点点至至多多有有m个个孩孩子子结结点点,所所以以第第i层层上上的的结结点点数数至至多多为为第第(i-1)层层上上结结点点数数的的m倍倍,即即至至多多为为mi-2m=mi-1个个,这与命题相同这与命题相同,故命题成立。故命题成立。性质性质3高度为高度为h的的m次树至多有次树至多有个结点。个结点。证证明明:由由树树的的性性质质2可可知知,
13、第第i层层上上最最多多结结点点数数为为mi-1(i=1,2,h),显显然然当当高高度度为为h的的m次次树树(即即度度为为m的的树树)上上每每一一层层都都达达到到最最多多结结点点数数时时,整整个个m次次树树具具有有最最多结点数多结点数,因此有:因此有:整整个个树树的的最最多多结结点点数数=每每一一层层最最多多结结点点数数之之和和=m0+m1+m2+mh-1=。性性质质4 具具有有n个个结结点点的的m次次树树的的最最小小高高度度为为 logm(n(m-1)+1)。证证明明:设设具具有有n个个结结点点的的m次次树树的的高高度度为为h,若若在在该该树树中中前前h-1层层都都是是满满的的,即即每每一一层
14、层的的结结点点数数都都等等于于mi-1个个(1ih-1),第第h层层(即即最最后后一一层层)的的结结点点数数可可能能满满,也也可可能能不不满满,则则该该树树具具有有最最小小的的高高度度。其其高高度度h可可计计算算如下:如下:根据树的性质根据树的性质3可得:可得:n乘乘(m-1)后得:后得:mh-1n(m-1)+1mh以以m为底取对数后得:为底取对数后得:h-1logm(n(m-1)+1)h即即logm(n(m-1)+1)hlogm(n(m-1)+1)+1因因h只能取整数只能取整数,所以所以h=logm(n(m-1)+1)结论得证。结论得证。例例7.1含含n个个结结点点的的三三次次树树的的最最小
15、小高高度度是是多多少少?最大高度是多少?最大高度是多少?解解:设设含含n个个结结点点的的(为为完完全全三三次次树树时时高高度度最最小小)的三次树的最小高度为的三次树的最小高度为h,则有:则有:1+3+9+3h-2n1+3+9+3h-1(3h-1-1)/2n(3h-1)/23h-12n+13h即:即:h=log3(2n+1)最大高度为最大高度为n-2。7.1.5 7.1.5 树的基本运算树的基本运算 树的运算主要分为三大类:树的运算主要分为三大类:第第一一类类,寻寻找找满满足足某某种种特特定定关关系系的的结结点点,如如寻寻找找当前结点的双亲结点等;当前结点的双亲结点等;第第二二类类,插插入入或或
16、删删除除某某个个结结点点,如如在在树树的的当当前前结结点点上上插插入入一一个个新新结结点点或或删删除除当当前前结结点点的的第第i i个个孩孩子子结点等;结点等;第三类第三类,遍历树中每个结点遍历树中每个结点,这里着重介绍。这里着重介绍。树树的的遍遍历历运运算算是是指指按按某某种种方方式式访访问问树树中中的的每每一一个个结结点点且且每每一一个个结结点点只只被被访访问问一一次次。树树的的遍遍历历运运算算的的算算法法主主要要有有先先根根遍遍历历和和后后根根遍遍历历两两种种。注注意意,下下面面的的先先根遍历和后根遍历算法都是递归的。根遍历和后根遍历算法都是递归的。1.先根遍历先根遍历先根遍历过程为:先
17、根遍历过程为:(1)访问根结点;访问根结点;(2)按照从左到右的次序先根遍历根结点的每一按照从左到右的次序先根遍历根结点的每一棵子树。棵子树。2.后根遍历后根遍历后根遍历过程为:后根遍历过程为:(1)按按照照从从左左到到右右的的次次序序后后根根遍遍历历根根结结点点的的每每一一棵子树;棵子树;(2)访问根结点。访问根结点。7.1.6 7.1.6 树的存储结构树的存储结构1.1.双亲存储结构双亲存储结构 这这种种存存储储结结构构是是一一种种顺顺序序存存储储结结构构,用用一一组组连连续续空空间间存存储储树树的的所所有有结结点点,同同时时在在每每个个结结点点中中附附设设一一个伪指针指示其双亲结点的位置
18、。个伪指针指示其双亲结点的位置。树的双亲存储结构示意图树的双亲存储结构示意图2.孩子链存储结构孩子链存储结构孩孩子子链链存存储储结结构构可可按按树树的的度度(即即树树中中所所有有结结点点度度的的最最大大值值)设设计计结结点点的的孩孩子子结结点点指指针针域域个个数数。下下图图(a)的的树对应的孩子链存储结构如图树对应的孩子链存储结构如图(b)所示。所示。树的树的孩子链孩子链存储结构示意图存储结构示意图3.孩子兄弟链存储结构孩子兄弟链存储结构孩孩子子兄兄弟弟链链存存储储结结构构是是为为每每个个结结点点设设计计三三个个域域:一一个个数数据据元元素素域域,一一个个该该结结点点的的第第一一个个孩孩子子结
19、结点点指指针针域域,一一个个该该结结点点的的下下一一个个兄兄弟弟结结点点指指针针域域。下下图图(a)的树对应的孩子兄弟链存储结构如图的树对应的孩子兄弟链存储结构如图(b)所示。所示。树的树的孩子兄弟链孩子兄弟链存储结构示意图存储结构示意图7.2 7.2 二叉树概念和性质二叉树概念和性质 7.2.1 7.2.1 二叉树概念二叉树概念7.2.2 7.2.2 二叉树性质二叉树性质7.2.3 7.2.3 二叉树与树、森林之间的转换二叉树与树、森林之间的转换7.2.1 7.2.1 二叉树概念二叉树概念二二叉叉树树也也称称为为二二次次树树或或二二分分树树,它它是是有有限限的的结结点点集集合合,这这个个集集
20、合合或或者者是是空空,或或者者由由一一个个根根结结点点和和两两棵棵互不相交的称为左子树和右子树的二叉树组成。互不相交的称为左子树和右子树的二叉树组成。二叉树的定义是一种递归定义。二叉树的定义是一种递归定义。二二叉叉树树有有五五种种基基本本形形态态,如如下下图图所所示示,任任何何复复杂杂的二叉树都是这五种基本形态的复合。的二叉树都是这五种基本形态的复合。从从定定义义看看到到,二二叉叉树树是是一一种种特特殊殊的的树树,其其表表示示法法也也与与树树的的表表示示法法一一样样,有有树树形形表表示示法法、文文氏氏图图表示法、凹入表示法和括号表示法等。表示法、凹入表示法和括号表示法等。在在一一棵棵二二叉叉树
21、树中中,如如果果所所有有分分支支结结点点都都有有左左孩孩子子结结点点和和右右孩孩子子结结点点,并并且且叶叶结结点点都都集集中中在在二二叉叉树树的的最最下下一一层层,这这样样的的二二叉叉树树称称为为满满二二叉叉树树。下下图图所所示示就就是是一一棵棵满满二二叉叉树树。可可以以对对满满二二叉叉树树的的结结点点进进行行连连续续编编号号,约约定定编编号号从从树树根根为为1 1开开始始,按按照照层层数数从从小小到到大大、同同一一层层从从左左到到右右的的次次序序进进行行。图图中中每每个个结结点点外外边边的的数数字字为为对对该结点的编号。该结点的编号。若若二二叉叉树树中中最最多多只只有有最最下下面面两两层层的
22、的结结点点的的度度数数可可以以小小于于2 2,并并且且最最下下面面一一层层的的叶叶结结点点 都都依依次次排排列列在在该该层层最最左左边边的的位位置置上上,则则这这样样的的二二叉叉树树称称为为完完全全二二叉叉树树。如如下下图图所所示示为为一一棵棵完完全全二二叉叉树树。同同样样可可以以对对完完全全二二叉叉树树中中每每个个结结点点进进行行连连续续编编号号,编编号号的的方方法法同同满满二二叉叉树树相同。图中每个结点外边的数字为对该结点的编号。相同。图中每个结点外边的数字为对该结点的编号。7.2.2 7.2.2 二叉树性质二叉树性质性性质质1非非空空二二叉叉树树上上叶叶结结点点数数等等于于双双分分支支结
23、结点点数数加加1。证证明明:设设二二叉叉树树上上叶叶结结点点数数为为n0,单单分分支支结结点点数数为为n1,双双分分支支结结点点数数为为n2,则则总总结结点点数数=n0+n1+n2。在在一一棵棵二二叉叉树树中中,所所有有结结点点的的分分支支数数(即即度度数数)应应等等于于单单分分支支结点数加上双分支结点数的结点数加上双分支结点数的2倍倍,即总的分支数即总的分支数=n1+2n2。由由于于二二叉叉树树中中除除根根结结点点以以外外,每每个个结结点点都都有有惟惟一一的的一一个个分分支支指指向向它它,因因此此二二叉叉树树中中有有:总总的的分分支支数数=总总结结点数点数-1。由上述三个等式可得:由上述三个
24、等式可得:n1+2n2=n0+n1+n2-1即:即:n0=n2+1性性质质2非非空空二二叉叉树树上上第第i层层上上至至多多有有2i-1个个结结点点,这这里应有里应有i1。由树的性质由树的性质2可推出。可推出。性质性质3高度为高度为h的二叉树至多有的二叉树至多有2h-1个结点个结点(h1)。由树的性质由树的性质3可推出。可推出。性性 质质 4 对对 完完 全全 二二 叉叉 树树 中中 编编 号号 为为 i的的 结结 点点(1in,n1,n为结点数为结点数)有:有:(1)若若i n/2,即即2in,则则编编号号为为i的的结结点点为为分分支支结点结点,否则为叶子结点。否则为叶子结点。(2)若若n为为
25、奇奇数数,则则每每个个分分支支结结点点都都既既有有左左孩孩子子结结点点,也也有有右右孩孩子子结结点点;若若n为为偶偶数数,则则编编号号最最大大的的分分支支结结点点(编编号号为为)只只有有左左孩孩子子结结点点,没没有有右右孩孩子子结结点点,其余分支结点都有左、右孩子结点。其余分支结点都有左、右孩子结点。(3)若若编编号号为为i的的结结点点有有左左孩孩子子结结点点,则则左左孩孩子子结结点点的的编编号号为为2i;若若编编号号为为i的的结结点点有有右右孩孩子子结结点点,则则右右孩子结点的编号为孩子结点的编号为(2i+1)。(4)除除树树根根结结点点外外,若若一一个个结结点点的的编编号号为为i,则则它它
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第7章 树形结构2 树形 结构
限制150内