《树与二叉树》PPT课件.ppt
《《树与二叉树》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《树与二叉树》PPT课件.ppt(138页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6 6章章 树与二叉树树与二叉树 树树树树 (tree)(tree)结结结结构构构构是是是是一一一一种种种种多多多多分分分分支支支支多多多多层层层层次次次次的的的的数数数数据据据据结结结结构构构构,由由由由一一一一组组组组结结结结点点点点组组组组成成成成。由由由由于于于于它它它它呈呈呈呈现现现现与与与与自自自自然然然然界界界界树树树树类类类类似似似似的的的的结结结结构构构构形形形形式式式式,所所所所以以以以称称称称之之之之为为为为树树树树。在在在在许许许许多多多多算算算算法法法法中中中中,常常常常用用用用树树树树型型型型结结结结构构构构描描描描述述述述问题的求解过程或表示求解的对策等。问题
2、的求解过程或表示求解的对策等。问题的求解过程或表示求解的对策等。问题的求解过程或表示求解的对策等。树的逻辑结构树的逻辑结构6.1 树树2树的存储结构树的存储结构 树树树树是是是是由由由由 n n (n n0)0)个个个个结结结结点点点点组组组组成成成成的的的的有有有有限限限限集集集集。在在在在任任任任意意意意一一一一棵棵棵棵非空树非空树非空树非空树 T T 中:中:中:中:有且仅有一个特定的称为有且仅有一个特定的称为有且仅有一个特定的称为有且仅有一个特定的称为根根根根(root)(root)结点;结点;结点;结点;当当当当 n n1 1 时时时时,其其其其余余余余结结结结点点点点分分分分成成成
3、成 mm (mm0)0)个个个个互互互互不不不不相相相相交交交交的的的的有有有有限限限限集集集集T T1 1,T T2 2,T Tmm,其其其其中中中中每每每每一一一一个个个个集集集集合合合合本本本本身身身身又又又又都都都都是是是是一一一一棵树,并且称为根的棵树,并且称为根的棵树,并且称为根的棵树,并且称为根的子树子树子树子树。36.1.1 树的逻辑结构树的逻辑结构 1.1.树的定义树的定义树的定义树的定义42.2.树的基本操作树的基本操作树的基本操作树的基本操作 InitTree(tree);InitTree(tree);操作结果:构造空树操作结果:构造空树操作结果:构造空树操作结果:构造空
4、树 TreeTree。InsertChild(Tree,p,child);InsertChild(Tree,p,child);初始条件:树初始条件:树初始条件:树初始条件:树 TreeTree 存在,存在,存在,存在,p p 指向指向指向指向 TreeTree 中某个结点,中某个结点,中某个结点,中某个结点,11i i p p 所所所所指指指指结结结结点点点点的的的的度度度度+1+1,非非非非空空空空树树树树 childchild 与与与与TreeTree 不相交。不相交。不相交。不相交。操作结果:插入操作结果:插入操作结果:插入操作结果:插入childchild为为为为 T T 中中中中 p
5、 p 所指结点的子所指结点的子所指结点的子所指结点的子树。树。树。树。树结构中经常会用到一些基本术语。例如:树结构中经常会用到一些基本术语。例如:树结构中经常会用到一些基本术语。例如:树结构中经常会用到一些基本术语。例如:结点结点结点结点结点的度结点的度结点的度结点的度叶结点叶结点叶结点叶结点分支结点分支结点分支结点分支结点树的度树的度树的度树的度双亲及孩子双亲及孩子双亲及孩子双亲及孩子兄弟兄弟兄弟兄弟堂兄弟堂兄弟堂兄弟堂兄弟祖先祖先祖先祖先子孙子孙子孙子孙层次层次层次层次树的深度树的深度树的深度树的深度有序树有序树有序树有序树无序树无序树无序树无序树森林森林森林森林5 3.3.树的基本概念树
6、的基本概念树的基本概念树的基本概念66.1.2 树的存储结构树的存储结构 假假假假设设设设以以以以一一一一组组组组连连连连续续续续空空空空间间间间存存存存储储储储树树树树的的的的结结结结点点点点,同同同同时时时时在在在在每每每每个个个个结结结结点点点点中中中中附附附附设设设设一一一一个个个个指指指指示示示示器器器器指指指指示示示示其其其其双双双双亲亲亲亲结结结结点点点点在在在在连连连连续续续续空空空空间间间间中中中中的的的的位位位位置。置。置。置。typedef struct typedef struct /双亲表示结构定义双亲表示结构定义双亲表示结构定义双亲表示结构定义 TNode TNod
7、e treeMAX;treeMAX;/结点数组结点数组结点数组结点数组 int int nodenum;nodenum;/结点数结点数结点数结点数 ParentTree;ParentTree;/双亲表示结构类型名双亲表示结构类型名双亲表示结构类型名双亲表示结构类型名#define Max 100#define Max 100 typedef struct TNode typedef struct TNode /结点结构定义结点结构定义结点结构定义结点结构定义 DataType DataTypedata;data;/数据域数据域数据域数据域 int intparent;parent;/双亲位置域
8、双亲位置域双亲位置域双亲位置域 TNode;TNode;1.1.双亲表示法双亲表示法双亲表示法双亲表示法7R RA AB BC CD DE EF FG GHHK K树树树树R R-1-1A A0 0B B0 0C C0 0D D1 1E E1 1F F3 3G G6 6HH6 6K K6 6数组下标数组下标数组下标数组下标0 01 12 23 34 45 56 67 78 89 9双亲存储结构双亲存储结构双亲存储结构双亲存储结构 树树树树的的的的双双双双亲亲亲亲表表表表示示示示存存存存储储储储结结结结构构构构利利利利用用用用了了了了每每每每个个个个结结结结点点点点(根根根根结结结结点点点点除除
9、除除外外外外)只只只只有惟一双亲的性质。有惟一双亲的性质。有惟一双亲的性质。有惟一双亲的性质。在在在在树树树树的的的的双双双双亲亲亲亲存存存存储储储储结结结结构构构构中中中中,求求求求双双双双亲亲亲亲 Parent(T,Parent(T,x)x)操操操操作作作作非非非非常常常常方方方方便便便便。求求求求树树树树根根根根结结结结点点点点 Root(x)Root(x)操操操操作作作作也也也也很很很很简简简简单单单单:反反反反复复复复调调调调用用用用 Parent Parent 操操操操作作作作,直直直直到到到到遇遇遇遇见见见见无无无无双双双双亲亲亲亲的的的的结结结结点点点点时时时时,即即即即 T
10、T.parent.parent=-1-1 时时时时,便便便便找找找找到到到到了了了了惟惟惟惟一一一一的的的的无双亲的根结点。无双亲的根结点。无双亲的根结点。无双亲的根结点。在在在在树树树树的的的的双双双双亲亲亲亲存存存存储储储储结结结结构构构构中中中中,求求求求某某某某结结结结点点点点的的的的孩孩孩孩子子子子结结结结点点点点时时时时需需需需遍遍遍遍历历历历整整整整个个个个结结结结构构构构。例例例例如如如如求求求求树树树树中中中中结结结结点点点点 F F 的的的的孩孩孩孩子子子子,就就就就需需需需要要要要在在在在整整整整个个个个结结结结构构构构中中中中 从从从从 头头头头 到到到到 尾尾尾尾 扫
11、扫扫扫 描描描描 一一一一 遍遍遍遍 T T.parent.parent 域域域域,T T.parent.parent=6 6 的的的的结结结结点点点点 G G、HH、K K 就就就就是是是是结结结结点点点点 F F 的孩子。的孩子。的孩子。的孩子。由由由由于于于于树树树树中中中中每每每每个个个个结结结结点点点点可可可可能能能能有有有有多多多多棵棵棵棵子子子子树树树树,则则则则可可可可以以以以用用用用多多多多重重重重链链链链表表表表,即即即即每每每每个个个个结结结结点点点点有有有有多多多多个个个个指指指指针针针针域域域域,其其其其中中中中每每每每个个个个指指指指针针针针指指指指向向向向一一一一
12、棵棵棵棵子子子子树树树树的的的的根根根根结结结结点点点点,此此此此时时时时,链链链链表表表表中中中中的的的的结结结结点点点点可可可可以以以以有有有有如如如如下下下下 3 3 种种种种结构格式:结构格式:结构格式:结构格式:8同构结点格式同构结点格式同构结点格式同构结点格式不同构结点格式不同构结点格式不同构结点格式不同构结点格式单链表存储结构单链表存储结构单链表存储结构单链表存储结构 2.2.孩子表示法孩子表示法孩子表示法孩子表示法 (1)(1)同构结点格式。同构结点格式。同构结点格式。同构结点格式。即多重链表中的结点是同构的。即多重链表中的结点是同构的。即多重链表中的结点是同构的。即多重链表中
13、的结点是同构的。datadatachildchild1 1childchild2 2childchildd d 其其其其中中中中 d d 为为为为树树树树的的的的度度度度。由由由由于于于于树树树树中中中中很很很很多多多多结结结结点点点点的的的的度度度度都都都都小小小小于于于于 d d,所以链表中有很多空链域,空间比较浪费。,所以链表中有很多空链域,空间比较浪费。,所以链表中有很多空链域,空间比较浪费。,所以链表中有很多空链域,空间比较浪费。9 设设设设树树树树的的的的度度度度为为为为 k k,结结结结点点点点数数数数为为为为 n n。若若若若采采采采用用用用同同同同构构构构结结结结点点点点格格
14、格格式式式式,每每每每个个个个结结结结点点点点具具具具有有有有 k k 个个个个固固固固定定定定链链链链域域域域,那那那那么么么么共共共共有有有有 nknk 个个个个链链链链域域域域。由由由由于于于于 n n 个个个个结结结结点点点点要要要要有有有有 (n n -1)1)个个个个枝枝枝枝相相相相连连连连,而而而而每每每每枝枝枝枝需需需需要要要要 1 1 个个个个链链链链域域域域。因此,这棵树的空链域的个树为:因此,这棵树的空链域的个树为:因此,这棵树的空链域的个树为:因此,这棵树的空链域的个树为:n n(k k 1)+1 1)+1。由由由由此此此此可可可可知知知知,树树树树的的的的度度度度越越
15、越越大大大大,空空空空链链链链域域域域越越越越多多多多。如如如如果果果果采采采采用用用用同同同同构结点格式将造成空间的极大浪费。构结点格式将造成空间的极大浪费。构结点格式将造成空间的极大浪费。构结点格式将造成空间的极大浪费。(2)(2)不不不不同同同同构构构构结结结结点点点点格格格格式式式式。即即即即多多多多重重重重链链链链表表表表中中中中的的的的结结结结点点点点是是是是不不不不同同同同构的。构的。构的。构的。degreedegree childchild1 1childchild2 2childchildd ddatadata 其中其中其中其中种种种种存存存存储储储储结结结结构构构构避避免免
16、了了孩孩子子表表示示法法存存储储结结构构中中出出现现的的空空链链域域,节节约约存存储储空空间间。但但是是由由于于每每个个结结点点的的孩孩子子链链域域数数不同,所以在这种结构上进行的各种操作不易实现。不同,所以在这种结构上进行的各种操作不易实现。为结点的度,为结点的度,为结点的度,为结点的度,degree degree 域的值和域的值和域的值和域的值和 d d相同。这相同。这相同。这相同。这10d d (3)(3)单单单单链链链链表表表表存存存存储储储储结结结结构构构构。即即即即把把把把每每每每个个个个结结结结点点点点的的的的孩孩孩孩子子子子结结结结点点点点排排排排列列列列起起起起来来来来,看看
17、看看成成成成是是是是一一一一个个个个线线线线性性性性表表表表,且且且且以以以以单单单单链链链链表表表表作作作作为为为为存存存存储储储储结结结结构构构构,则则则则 n n 个个个个结结结结点点点点有有有有 n n 个个个个孩孩孩孩子子子子链链链链表表表表(叶叶叶叶子子子子结结结结点点点点的的的的孩孩孩孩子子子子链链链链表表表表为为为为空空空空表表表表)。而而而而 n n 个个个个头头头头指指指指针针针针又又又又组组组组成成成成一一一一个个个个线线线线性性性性表表表表,为为为为了了了了便于查找,可以采用顺序存储结构。便于查找,可以采用顺序存储结构。便于查找,可以采用顺序存储结构。便于查找,可以采用
18、顺序存储结构。11R RA AB BC CD DE EF FG GHHk k树树树树A AB BC CD DR RE EF FG GHHK K3 35 5 6 6 0 01 12 2 7 78 89 9 0 01 12 23 34 45 56 67 78 89 9根位置根位置根位置根位置12 与与与与树树树树的的的的双双双双亲亲亲亲表表表表示示示示法法法法相相相相反反反反,树树树树的的的的孩孩孩孩子子子子单单单单链链链链表表表表表表表表示示示示法法法法便便便便于于于于查查查查找找找找树树树树中中中中任任任任一一一一结结结结点点点点的的的的孩孩孩孩子子子子:由由由由链链链链表表表表中中中中某某某
19、某结结结结点点点点的的的的指指指指针针针针域域域域 next next 即即即即可可可可以以以以得得得得到到到到该结点的孩子结点。该结点的孩子结点。该结点的孩子结点。该结点的孩子结点。在在在在树树树树的的的的孩孩孩孩子子子子单单单单链链链链表表表表结结结结构构构构中中中中,查查查查找找找找某某某某结结结结点点点点的的的的双双双双亲亲亲亲需需需需要要要要按按按按照照照照该该该该结结结结点点点点在在在在头头头头结结结结点点点点顺顺顺顺序序序序表表表表中中中中的的的的位位位位置置置置序序序序号号号号在在在在每每每每个个个个孩孩孩孩子子子子链链链链表表表表中中中中扫扫扫扫描描描描,当当当当在在在在孩孩
20、孩孩子子子子域域域域 child child 中中中中找找找找到到到到相相相相同同同同的的的的序序序序号号号号时时时时,则则则则单单单单链链链链表表表表表表表表头头头头的的的的结结结结点点点点就就就就是是是是要找的双亲。要找的双亲。要找的双亲。要找的双亲。例例例例如如如如,要要要要寻寻寻寻找找找找树树树树中中中中 G G 结结结结点点点点的的的的双双双双亲亲亲亲结结结结点点点点。G G 结结结结点点点点在在在在头头头头结结结结点点点点顺顺顺顺序序序序表表表表中中中中的的的的位位位位置置置置序序序序号号号号为为为为 7 7,则则则则在在在在孩孩孩孩子子子子链链链链表表表表中中中中查查查查询询询询
21、 child child=7 7 的的的的孩孩孩孩子子子子结结结结点点点点,当当当当找找找找到到到到的的的的时时时时候候候候,该该该该单单单单链链链链表表表表的的的的表表表表头头头头结结结结点点点点 F F 就是就是就是就是 G G 的双亲结点。的双亲结点。的双亲结点。的双亲结点。树树树树的的的的孩孩孩孩子子子子兄兄兄兄弟弟弟弟表表表表示示示示法法法法又又又又称称称称二二二二叉叉叉叉树树树树表表表表示示示示法法法法,或或或或二二二二叉叉叉叉链链链链表表表表表表表表示示示示法法法法,即即即即以以以以二二二二叉叉叉叉链链链链表表表表作作作作为为为为树树树树的的的的存存存存储储储储结结结结构构构构。
22、链链链链表表表表中中中中每每每每个个个个结结结结点点点点的的的的结结结结构构构构相相相相同同同同,都都都都有有有有 3 3 个个个个域域域域:数数数数据据据据域域域域 data data 存存存存放放放放树树树树中中中中结结结结点点点点的的的的信信信信息息息息;孩孩孩孩子子子子域域域域 firstchild firstchild 存存存存放放放放该该该该结结结结点点点点的的的的第第第第一一一一个个个个孩孩孩孩子子子子结结结结点点点点(从从从从左左左左算算算算起起起起)的的的的地地地地址址址址;兄兄兄兄弟弟弟弟域域域域 nextsibling nextsibling 存存存存放放放放该该该该结结
23、结结点的下一个兄弟结点(从左向右)的地址。点的下一个兄弟结点(从左向右)的地址。点的下一个兄弟结点(从左向右)的地址。点的下一个兄弟结点(从左向右)的地址。133.3.孩子兄弟表示法孩子兄弟表示法孩子兄弟表示法孩子兄弟表示法R RA AB BC CD DE EF FG GHHK K树树树树R R A AD DE E B BC C F F G GHHK K 14 树树树树的的的的二二二二叉叉叉叉链链链链表表表表存存存存储储储储结结结结构构构构的的的的最最最最大大大大优优优优点点点点就就就就是是是是结结结结点点点点的的的的结结结结构构构构统统统统一一一一,和和和和前前前前面面面面讲讲讲讲的的的的二
24、二二二叉叉叉叉树树树树表表表表示示示示法法法法完完完完全全全全一一一一样样样样,因因因因此此此此可可可可以以以以利利利利用用用用二二二二叉叉叉叉树树树树的的的的算算算算法法法法来来来来实实实实现现现现对对对对树树树树的操作。的操作。的操作。的操作。在在在在树树树树的的的的二二二二叉叉叉叉链链链链表表表表存存存存储储储储结结结结构构构构中中中中,易易易易于于于于实实实实现现现现找找找找结结结结点点点点等等等等的的的的操操操操作作作作。如如如如果果果果要要要要访访访访问问问问树树树树中中中中结结结结点点点点 x x 的的的的第第第第 i i 个个个个孩孩孩孩子子子子,那那那那么么么么 只只只只 需
25、需需需 要要要要 先先先先 从从从从 该该该该 结结结结 点点点点 的的的的 firstchild firstchild 域域域域找找找找到到到到第第第第 1 1 个个个个孩孩孩孩子子子子结结结结点点点点,然然然然后后后后再再再再沿沿沿沿孩孩孩孩子子子子结结结结点点点点的的的的 nextsibling nextsibling 域域域域连连连连续续续续走走走走 i i-1-1 步步步步,便便便便可可可可以以以以找找找找到到到到结结结结点点点点 x x 的第的第的第的第 i i 个孩子。个孩子。个孩子。个孩子。例例例例如如如如,要要要要访访访访问问问问 F F 结结结结点点点点的的的的第第第第 3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 树与二叉树 二叉 PPT 课件
限制150内