【精品】【考研计算机专业课】武汉大学数据结构PPT课件 第7章树形结构精品ppt课件.ppt





《【精品】【考研计算机专业课】武汉大学数据结构PPT课件 第7章树形结构精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】【考研计算机专业课】武汉大学数据结构PPT课件 第7章树形结构精品ppt课件.ppt(185页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【考研计算机专业课】武汉大学数据结构PPT课件 第7章 树形结构7.1.1 树的定义树的定义 形式化定义:形式化定义:树树:TK,R。K是是包包含含n个个结结点点的的有有穷穷集集合合(n0),关系关系R满足以下条件满足以下条件:l有且仅有一个结点有且仅有一个结点k0K,它对于关系它对于关系R来说没有来说没有前驱结点前驱结点,结点结点k0称作树的称作树的根结点根结点。l 除结点除结点k0外外,K中的每个结点对于关系中的每个结点对于关系R来说都有来说都有且且仅有一个前驱结点仅有一个前驱结点。l K中每个结点对于关系中每个结点对于关系R来说可以有来说可以有零个或多个零个或多个后继结点后继结点。7.1
2、 树的基本概念树的基本概念 递归定义:递归定义:树树是由是由n(n0)个结点组成的有限集合(记为)个结点组成的有限集合(记为T)。其中:)。其中:l如果如果n=0,它是一棵空树它是一棵空树,这是树的特例;这是树的特例;l如果如果n0,这,这n个结点中存在(有仅存在)一个结点个结点中存在(有仅存在)一个结点作为树的根结点作为树的根结点,简称为根结点(简称为根结点(root),其余结点可),其余结点可分为分为m(m0)个互不相交的有限集)个互不相交的有限集T1,T2,Tm,其,其中每一棵子集本身又是一棵符合本定义的中每一棵子集本身又是一棵符合本定义的树树,称为,称为根根root的子树。的子树。ro
3、otT1T2Tm7.1.2 树的表示树的表示 (1)树树形形表表示示法法。这这是是树树的的最最基基本本的的表表示示,使使用用一一棵棵倒倒置置的树表示树结构的树表示树结构,非常直观和形象。下图就是采用这种表示法。非常直观和形象。下图就是采用这种表示法。ABCDEFGJHIKLM逻辑结构表示逻辑结构表示1 (2)文文氏氏图图表表示示法法。使使用用集集合合以以及及集集合合的的包包含含关关系系描描述述树树结结构构。下下图图就就是是树树的的文文氏氏图表示法。图表示法。ABCDEFGJHIKLM逻辑结构表示逻辑结构表示2AEFBCGJHDKLMI思考题:思考题:树的逻辑结构定义?适合表示什么类型的数据?树
4、的逻辑结构定义?适合表示什么类型的数据?7.1.3 树的基本术语树的基本术语 1.结结点点的的度度与与树树的的度度:树树中中某某个个结结点点的的子子树树的的个个数数称称为为该该结结点点的的度度。树树中中各各结结点点的的度度的的最最大大值值称称为为树树的的度度,通通常常将将度为度为m的树称为的树称为m次树次树。2.分分支支结结点点与与叶叶结结点点:度度不不为为零零的的结结点点称称为为非非终终端端结结点点,又又叫叫分分支支结结点点。度度为为零零的的结结点点称称为为终终端端结结点点或或叶叶结结点点。在在分分支支结结点点中中,每每个个结结点点的的分分支支数数就就是是该该结结点点的的度度。如如对对于于度
5、度为为1的的结结点点,其其分分支支数数为为1,被被称称为为单单分分支支结结点点;对对于于度度为为2的的结结点点,其分支数为其分支数为2,被称为双分支结点被称为双分支结点,其余类推。其余类推。ABCDEFGJHIKLM 3.路路径径与与路路径径长长度度:对对于于任任意意两两个个结结点点ki和和kj,若若树树中中存存在在一一个个结结点点序序列列ki,ki1,ki2,kin,kj,使使得得序序列列中中除除ki外外的的任任一一结结点点都都是是其其在在序序列列中中的的前前一一个个结结点点的的后后继继,则则称称该该结结点点序序列列为为由由ki到到kj的的一一条条路路径径,用用 路路 径径 所所 通通 过过
6、 的的 结结 点点 序序 列列(ki,ki1,ki2,kj)表示这条路径表示这条路径。路路径径长长度度等等于于路路径径所所通通过过的的结结点点数目减数目减1(即路径上分支数目)。(即路径上分支数目)。ABCDEFGJHIKLM 4.孩孩子子结结点点、双双亲亲结结点点和和兄兄弟弟结结点点:在在一一棵棵树树中中,每每个个结结点点的的后后继继,被被称称作作该该结结点点的的孩孩子子结结点点(或或子子女女结结点点)。相相应应地地,该该结结点点被被称称作作孩孩子子结结点点的的双双亲亲结点结点(或父母结点或父母结点)。具具有有同同一一双双亲亲的的孩孩子子结结点点互互为为兄兄弟弟结结点点。进进一一步步推推广广
7、这这些些关关系系,可可以以把把每每个个结结点点的的所所有有子子树树中中的的结结点点称称为为该该结结点的点的子孙结点子孙结点。从从树树根根结结点点到到达达该该结结点点的的路路径径上上经经过过的的所所有有结结点点被被称称作作该该结结点点的的祖祖先先结结点点。ABCDEFGJHIKLM 5.结结点点的的层层次次和和树树的的高高度度:树树中中的的每每个个结结点点都都处处在在一一定定的的层层次次上上。结结点点的的层层次次从从树树根根开开始始定定义义,根根结结点点为为第第1层层,它它的的孩孩子子结结点点为为第第2层层,以以此此类类推推,一一个个结结点点所所在在的的层层次次为为其其双双亲亲结结点点所所在在的
8、的层层次次加加1。树树中中结结点点的的最最大大层层次次称称为为树树的的高高度度(或或树树的的深度深度)。)。6.有有序序树树和和无无序序树树:若若树树中中各各结结点点的的子子树树是是按按照照一一定定的的次次序序从从左左向向右右安安排排的的,且且相相对对次次序序是是不不能能随随意意变变换换的的,则则称称为为有有序序树树,否否则则称称为为无无序树序树。ABCDEFGJHIKLM 7.森森林林:n(n0)个个互互不不相相交交的的树树的的集集合合称称为为森森林林。森森林林的的概概念念与与树树的的概概念念十十分分相相近近,因因为为只只要要把把树树的的根根结结点点删删去去就就成成了了森森林林。反反之之,只
9、只要要给给n棵棵独独立立的的树树加加上上一一个个结结点点,并把这并把这n棵树作为该结点的子树棵树作为该结点的子树,则森林就变成了树。则森林就变成了树。7.1.4 树的性质树的性质性性质质1 树树中中的的结结点点数数等等于于所所有有结点的度数加结点的度数加1。证证明明:根根据据树树的的定定义义,在在一一棵棵树树中中,除除树树根根结结点点外外,每每个个结结点点有有且且仅仅有有一一个个前前驱驱结结点点。也也就就是是说说,每每个个结结点点与与指指向向它它的的一一个个分分支支一一一一对对应应,所所以以除除树树根根之之外外的的结结点点数数等等于于所所有有结结点点的的分分支支数数(度度数数),从从而而可可得
10、得树树中中的的结结点点数数等等于于所有结点的度数加所有结点的度数加1。度之和分支数度之和分支数分支数分支数=n-1所以,所以,n=度之和度之和+1ABCDEFGJHIKLM求解树的节点个数问题求解树的节点个数问题:对于度为:对于度为m的树,在的树,在n、n0、n1、n2、nm中只有两个参数未知时,一般可求出这两个值。例如求中只有两个参数未知时,一般可求出这两个值。例如求n和和n0的求解的求解过程如下:过程如下:n=n0+n1+nm度之和度之和=n1度之和度之和=n1+2n2+mnm所以有:所以有:nn1+2n2+mnm+1=n0+n1+nm这样:这样:n0=n2+(m1)nm+1求解方法归纳求
11、解方法归纳 例如,一棵度为例如,一棵度为4的树的树T中,若有中,若有20个度为个度为4的节点,的节点,10个度为个度为3的节点,的节点,1个度为个度为2的节点,的节点,10个度为个度为1的节点,则树的节点,则树T的叶子节点个数是的叶子节点个数是 。A.41B.82 C.113D.122注:本题为注:本题为2010年全国考研题年全国考研题 性质性质2 度为度为m的树中第的树中第i层上至多有层上至多有mi-1个结点个结点,这里应有这里应有i1。证明(采用数学归纳法)证明(采用数学归纳法)对对于于第第一一层层,因因为为树树中中的的第第一一层层上上只只有有一一个个结结点点,即即整整个个树树的的根根结结
12、点点,而而由由i=1代代入入mi-1,得得mi-1=m1-1=1,也也同同样样得得到到只只有有一一个个结点,显然结论成立。结点,显然结论成立。假假设设对对于于第第(i-1)层层(i1)命命题题成成立立,即即度度为为m的的树树中中第第(i-1)层上至多有层上至多有mi-2个结点。个结点。则则根根据据树树的的度度的的定定义义,度度为为m的的树树中中每每个个结结点点至至多多有有m个个孩孩子子结结点点,所所以以第第i层层上上的的结结点点数数至至多多为为第第(i-1)层层上上结结点点数数的的m倍倍,即即至多为至多为mi-2m=mi-1个,这与命题相同,故命题成立。个,这与命题相同,故命题成立。性质性质3
13、 高度为高度为h的的m次树至多有次树至多有 个结点。个结点。证证 明明:由由 树树 的的 性性 质质 2可可 知知,第第 i层层 上上 最最 多多 结结 点点 数数 为为 mi-1(i=1,2,h),显显然然当当高高度度为为h的的m次次树树(即即度度为为m的的树树)上上每每一一层层都达到最多结点数时都达到最多结点数时,整个整个m次树具有最多结点数次树具有最多结点数,因此有:因此有:整整 个个 树树 的的 最最 多多 结结 点点 数数=每每 一一 层层 最最 多多 结结 点点 数数 之之 和和=m0+m1+m2+mh-1=。性性质质4 具具有有n个个结结点点的的m次次树树的的最最小小高高度度为为
14、 logm(n(m-1)+1)。证证明明:设设具具有有n个个结结点点的的m次次树树的的高高度度为为h,若若在在该该树树中中前前h-1层层都都是是满满的的,即即每每一一层层的的结结点点数数都都等等于于mi-1个个(1ih-1),第第h层层(即即最最后后一一层层)的的结结点点数数可可能能满满,也也可可能能不不满满,则则该该树树具具有有最最小小的的高高度度。其高度其高度h可计算如下:可计算如下:m=3,h=3,最多结点情况,最多结点情况m=3,h=3,最少结点情况,最少结点情况根据树的性质根据树的性质3可得:可得:n乘乘(m-1)后得:后得:mh-1n(m-1)+1mh以以m为底取对数后得:为底取对
15、数后得: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个个结结点点的的三三次次树树的的最最小小高高度度是是多多少少?最最大大高高度是多少?度是多少?解解:设设含含n个个结结点点的的(为为完完全全三三次次树树时时高高度度最最小小)的的三三次次树的最小高度为树的最小高度为h,则有:则有:1+3+9+3h-2n1+3+9+3h-1 (3h-1-1)/2 n(3h-1)/2 3h-12n+13h 即:即:h=log3(2n+1)最大高度为最
16、大高度为n-2。7.1.5 树的基本运算树的基本运算 树的运算主要分为三大类:树的运算主要分为三大类:第第一一类类,寻寻找找满满足足某某种种特特定定关关系系的的结结点点,如如寻寻找找当当前前结结点的双亲结点等;点的双亲结点等;第第二二类类,插插入入或或删删除除某某个个结结点点,如如在在树树的的当当前前结结点点上上插插入一个新结点或删除当前结点的第入一个新结点或删除当前结点的第i i个孩子结点等;个孩子结点等;第三类第三类,遍历树中每个结点遍历树中每个结点,这里着重介绍。这里着重介绍。树树的的遍遍历历运运算算是是指指按按某某种种方方式式访访问问树树中中的的每每一一个个结结点点且且每每一个结点只被
17、访问一次。一个结点只被访问一次。有以下三种遍历方法:有以下三种遍历方法:树的遍历树的遍历 先根遍历先根遍历 后根遍历后根遍历 层次遍历层次遍历注意:先根和后根遍历算法都是递归的。注意:先根和后根遍历算法都是递归的。按层次遍历按层次遍历:先根遍历先根遍历:后根遍历后根遍历:若树不空,则先访问根结点,然后依次先根遍历各棵子树。若树不空,则先访问根结点,然后依次先根遍历各棵子树。若树不空,则先依次后根遍历各棵子树,然后访问根结点。若树不空,则先依次后根遍历各棵子树,然后访问根结点。若树不空,则自上而下自左至右访问树中每个结点。若树不空,则自上而下自左至右访问树中每个结点。层次遍历的顶点访问次序:层次
18、遍历的顶点访问次序:ABCDEFGHJIK 先根遍历的顶点访问次序:先根遍历的顶点访问次序:A B E F C D G H I J K 后根遍历的顶点访问次序:后根遍历的顶点访问次序:E F B C I J K H G D AA B C D E F G H I J K7.1.6 树的存储结构树的存储结构1.1.双亲存储结构双亲存储结构 这这种种存存储储结结构构是是一一种种顺顺序序存存储储结结构构,用用一一组组连连续续空空间间存存储储树树的的所所有有结结点点,同同时时在在每每个个结结点点中中附附设设一一个个伪伪指指针针指指示示其双亲结点的位置。其双亲结点的位置。树的双亲存储结构示意图树的双亲存储
19、结构示意图双亲存储结构的类型定义如下:双亲存储结构的类型定义如下:typedef struct ElemType data;/结点的值结点的值 int parent;/指向双亲的位置指向双亲的位置 PTreeMaxSize;思考题:该存储结构的优缺点?思考题:该存储结构的优缺点?2.孩子链存储结构孩子链存储结构 孩孩子子链链存存储储结结构构可可按按树树的的度度(即即树树中中所所有有结结点点度度的的最最大大值值)设设计计结结点点的的孩孩子子结结点点指指针针域域个个数数。下下图图(a)的的树树对对应应的的孩孩子子链链存存储储结构如图结构如图(b)所示。所示。树的树的孩子链孩子链存储结构示意图存储结
20、构示意图孩子链存储结构的结点类型定义如下:孩子链存储结构的结点类型定义如下:typedef struct node ElemType data;/结点的值结点的值 struct node*sonsMaxSons;/指向孩子结点指向孩子结点 TSonNode;其中,其中,MaxSons为最多的孩子结点个数。为最多的孩子结点个数。思考题:思考题:n个结点的个结点的m次树有多少个空指针域?次树有多少个空指针域?思考题:该存储结构的优缺点?思考题:该存储结构的优缺点?3.孩子兄弟链存储结构孩子兄弟链存储结构 孩孩子子兄兄弟弟链链存存储储结结构构是是为为每每个个结结点点设设计计三三个个域域:一一个个数数
21、据据元元素素域域,一一个个该该结结点点的的第第一一个个孩孩子子结结点点指指针针域域,一一个个该该结结点点的下一个兄弟结点指针域。的下一个兄弟结点指针域。树的树的孩子兄弟链孩子兄弟链存储结构示意图存储结构示意图兄弟链存储结构中结点的类型定义如下:兄弟链存储结构中结点的类型定义如下:typedef struct tnode ElemType data;/结点的值结点的值 struct tnode*hp;/指向兄弟指向兄弟 struct tnode*vp;/指向孩子结点指向孩子结点 TSBNode;每个结点固定只有两个指针域。每个结点固定只有两个指针域。思考题:该存储结构的优缺点?思考题:该存储结构
22、的优缺点?7.2.1 二叉树概念二叉树概念 二叉树是有限的结点集合。二叉树是有限的结点集合。这个集合或者是空。这个集合或者是空。或或者者由由一一个个根根结结点点和和两两棵棵互互不不相相交交的的称称为为左左子子树树和和右右子树的二叉树组成。子树的二叉树组成。注意:二叉树的定义是一种递归定义。注意:二叉树的定义是一种递归定义。7.2 二叉树概念和性质二叉树概念和性质 二叉树的五种基本形态:二叉树的五种基本形态:空树空树只含根结点只含根结点右子树为空树右子树为空树左子树为空树左子树为空树左右子树均左右子树均不为空树不为空树NNLRNLNR 从从定定义义看看到到,二二叉叉树树是是一一种种特特殊殊的的树
23、树,其其表表示示法法也也与与树树的表示法一样:的表示法一样:树形表示法树形表示法 文氏图表示法文氏图表示法 凹入表示法凹入表示法 括号表示法括号表示法 在在一一棵棵二二叉叉树树中中,如如果果所所有有分分支支结结点点都都有有左左孩孩子子结结点点和和右右孩孩子子结结点点,并并且且叶叶结结点点都都集集中中在在二二叉叉树树的的最最下下一一层层,这这样样的的二二叉叉树树称为称为满二叉树满二叉树。下下图图所所示示就就是是一一棵棵满满二二叉叉树树。可可以以对对满满二二叉叉树树的的结结点点进进行行连连续续编编号号,约约定定编编号号从从树树根根为为1开开始始,按按照照层层数数从从小小到到大大、同同一一层层从从左
24、左到到右右的的次次序序进进行行。图图中中每每个个结结点点外外边边的的数数字字为为对对该该结结点点的的编号。编号。若若二二叉叉树树中中最最多多只只有有最最下下面面两两层层的的结结点点的的度度数数可可以以小小于于2,并并且且最最下下面面一一层层的的叶叶结结点点都都依依次次排排列列在在该该层层最最左左边边的的位位置置上上,则则这样的二叉树称为这样的二叉树称为完全二叉树完全二叉树。如如下下图图所所示示为为一一棵棵完完全全二二叉叉树树。同同样样可可以以对对完完全全二二叉叉树树中中每每个个结结点点进进行行连连续续编编号号,编编号号的的方方法法同同满满二二叉叉树树相相同同。图图中中每每个个结结点外边的数字为
25、对该结点的编号。点外边的数字为对该结点的编号。7.2.2 二叉树性质二叉树性质 性性质质1 非非空空二二叉叉树树上上叶叶结结点点数数等等于于双双分分支支结结点点数数加加1。证证明明:设设二二叉叉树树上上叶叶结结点点数数为为n0,单单分分支支结结点点数数为为n1,双双分分支支结结点点数数为为n2,则则总总结结点点数数=n0+n1+n2。在在一一棵棵二二叉叉树树中中,所所有有结结点点的的分分支支数数(即即度度数数)应应等等于于单单分分支支结结点点数数加加上上双双分分支支结结点点数数的的2倍倍,即总的分支数即总的分支数=n1+2n2。由由于于二二叉叉树树中中除除根根结结点点以以外外,每每个个结结点点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 考研计算机专业课 【精品】【考研计算机专业课】武汉大学数据结构PPT课件 第7章 树形结构精品ppt课件 考研 计算机 专业课 武汉大学 数据结构 PPT 课件 树形 结构

限制150内