- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作业:已知二叉树的前序遍历序列是AEFBGCDHIKJ,中序遍历EFAGBCHKIJD,画出此二叉树,并写出后序遍历 设前序遍历某二叉树的序列为ABCD,中序遍历该二叉树的序列为BADC,则后序遍历该二叉树的序列为_____________。 6.5 二叉树、树和森林 6.5.1 树的存储结构 树的存储结构有多种表示方法,比较典型的乃是顺序结构和链表结构两类。 顺序存储结构即向量,一般将树结点按自上而下,自左至右的顺序一一存放。如前文所介绍的完全二叉树就可以采用顺序存储结构。 另外还有多重链表的孩子表示法。图6.13所示的树是一个三叉树,可用三重链表来存储,其结点结构为:有一个数据域和三个指针域,指针域用于指向该结点的各个孩子。该树的三重链表如图6.14(a)所示。如果面对一棵分叉很多的树,这种方法就会更加复杂。 图6.13 树 图6.14 树的存储结构 (a) 多重链表;(b) 孩子—兄弟链表 树最常用的是孩子—兄弟二叉链表表示法,这种方法表示规范,不仅适用于多叉树的存储,也适用于森林的存储。构成孩子—兄弟二叉链表的结点结构是:一个数据域和两个指针域,一个指针指向它的长子,另一指针指向它的一个兄弟。图6.13中树的孩子—兄弟二叉链表结构如图6.14(b)所示。假设把图6.14(b)中指向兄弟的水平方向指针改为下斜45°,不难发现它与一棵二叉树十分相似。由本章第6.2节可知二叉树结构规范、简单并具有一些重要的性质,因此常将一般树结构转换为二叉树结构进行处理。 6.5.2 树与二叉树的转换 对于一般树,树中孩子的次序并不重要,只要双亲与孩子的关系正确即可。但在二叉树中,左、右孩子的次序是严格区分的。所以在讨论二叉树与一般树之间的转换时,为了不引起混淆,就约定按树上现有结点次序进行转换。这里研究二叉树与一般树之间的转换,可以了解两者之间的内在本质联系,同时在研究解决一般树的问题时,有时可以将其转换为二叉树问题来解决。 1. 一般树转化为二叉树 将一般树转化为二叉树的思路,主要根据树的孩子—兄弟存储方式而来,步骤是: (1) 加线:在各兄弟结点之间用虚线相连。可理解为每个结点的兄弟指针指向它的一个兄弟。 (2) 抹线:对每个结点仅保留它与其最左一个孩子的连线,抹去该结点与其他孩子之间的连线。可理解为每个结点仅有一个孩子指针,让它指向自己的长子。 (3) 旋转:把虚线改为实线从水平方向向下旋转45°,成右斜下方向。原树中实线成左斜下方向。这样树的形状就呈现出一棵二叉树。 由于二叉树中各结点的右孩子都是原一般树中该结点的兄弟。而一般树的根结点又没有兄弟结点,因此所生成的二叉树的根结点都没有右子树。在所生成的二叉树中某一结点的左孩子仍是原来树中该结点的长子,并且是它的最左孩子。图6.15是一个由一般树转为二叉树的实例。 图6.15 一般树转为二叉树 (a) 一般树;(b) 加线;(c) 抹线;(d) 旋转整理 2. 二叉树还原为一般树 二叉树转换为一般树,此时的二叉树必须是由某一树(一般树)转换而来的没有右子树的二叉树。并非随便一棵二叉树都能还原成一般树。其还原过程也分为三步: (1) 加线:若某结点i是双亲结点的左孩子,则将该结点i的右孩子以及当且仅当连续地沿着右孩子的右链不断搜索到所有右孩子,都分别与结点i的双亲结点用虚线连接。 (2) 抹线:把原二叉树中所有双亲结点与其右孩子的连线抹去。这里的右孩子实质上是原一般树中结点的兄弟,抹去的连线是兄弟间的关系。 (3) 进行整理:把虚线改为实线,把结点按层次排列。 图6.16 二叉树还原为一般树 (a) 二叉树;(b) 还原加线;(c) 还原抹线;(d) 还原整理 第6章 树与二叉树 第6章 树与二叉树 6.1 树的基本概念和术语 6.2 二叉树 6.3 遍历二叉树 6.4 二叉树、树和森林 6.5 树的应用 6.1 树的基本概念和术语 6.1.1 树的定义 树(tree)是由一个或多个结点组成的有限集合T。其中: (1) 一个特定的结点称为该树的根(root)结点,而且有且仅有一个; (2) 根结点之外的其余结点可分为m(m≥0)个互不相交的有限集合T1,T2,…,Tm,且其中每一个集合本身又是一棵树,称之为根的子树(subtree)。 这是一个递归的定义,即在定义中又用到了树这个术语。它反应了树的固有特性。可以认为仅有一个根结点的树是最小
文档评论(0)