武汉软件工程职业学院《数据结构讲义》讲叉树树和森林.docVIP

武汉软件工程职业学院《数据结构讲义》讲叉树树和森林.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
武汉软件工程职业学院《数据结构讲义》讲叉树树和森林

1.掌握树的存储结构。 2.掌握树/森林与二叉树的转换,树的遍历方法树/森林与二叉树的转换树/森林与二叉树的转换 结点定长的孩子链表表示法 图4-5-1所示的树,它是一个三叉树,可用三叉链表来存储。其结点结构为:一个数据域和三个指针域。指针域用于指向该结点的各个孩子结点。该树的三重链表如图4-5-2(a)所示。 孩子-兄弟二叉链表表示法 如果用孩子-兄弟链表作为存储结构,其结点结构为:一个数据域和两个指针域。其中一个指针指向它的第一个孩子结点,另一个指向它的兄弟结点。图4-5-1中树的孩子-兄弟链表如图4-5-2(b)所示。 假设把图4-5-2(b)中指向兄弟的水平方向指针改为下斜45°,不难发现它与一棵二叉树的链表结构十分相似。由于二叉树的结构规范、简单,因此常将一般树结构转换为二叉树结构,然后利用二叉树已有的算法进行处理。 4.5.2 树与二叉树之间的转换 对于一般树,树中孩子的次序并不重要,只要双亲与孩子的关系正确即可。但在二叉树中,左、右孩子的次序是严格区分的。所以在讨论二叉树和一般树之间的转换时,为不引起混淆,就约定按树上现有结点次序进行转换。 一般树转换为二叉树 将一般树转化为二叉树的思路,主要根据树的孩子-兄弟存储方式而来,具体步骤为: 加线。在各兄弟结点之间用虚线相连。可理解为每个结点的兄弟指针指向它的一个兄弟。 抹线。对每个结点仅保留它与其最左孩子的连线,抹去该结点与其它孩子之间的连线。可理解为每个结点仅有一个孩子指针,让它指向自己的第一个孩子。 旋转。把虚线改为实线从水平方向向下旋转45°,成右斜下方向。原书中实线成左斜下方向。这样就形成一棵二叉树。 由于二叉树中各结点的右孩子都是原一树数中该结点的兄弟,而一般树的根结点又没有兄弟结点,因此所生成的二叉树的根结点没有右子树。在所生成的二叉树中某一结点的左孩子仍是原来树中该结点的长子,并且是它的最左孩子。图4-5-3是一个由一般树转为二叉树的实例。 二叉树还原为一般树 二叉树还原为一般树,此时的二叉树必须是由某一树转换而来的没有右子树的二叉树。其还原过程也分为三步: 加线。若某结点I是双亲结点的左孩子,则将该结点I的右孩子以及当且 仅当连续地沿着右孩子的右链不断搜索到所有右孩子,都分别与结点I的双亲结点用虚线连接。 抹线。把原二叉树中所有双亲结点与其右孩子的连线抹去。这里的右孩子实质上是原一般数中结点的兄弟,抹去的连线是兄弟间的关系。 进行整理。把虚线改为实线,把结点按层次排列。 二叉树还原为一般树的示例,如图4-5-4所示。 4.5.3 森林与二叉树的转换 森林是树的有限集合,如图4-5-5(a)所示。 森林转换为二叉树 森林转换为二叉树的步骤为: 将森林中每棵子树转换成相应的二叉树,形成有若干二叉树的森林。 按森林中树的先后次序,依次将后边一棵二叉树作为前边一棵二叉树根结点的右子树,这样整个森林就生成了一棵二叉树。实际上第一棵树的根结点便是生成后的二叉树的根结点。图4-5-5是森林转化为二叉树的示例。 二叉树还原为森林 将一棵由森林转换得到的二叉树还原为森里的步骤是: 抹线。将二叉树的根结点与其右孩子的连线以及当且仅当连续地沿着右链不断地搜索到的所有右孩子的连线全部抹去,这样就得到包含有若干棵二叉树的森林。 还原。将每棵二叉树按二叉树还原为一般树的方法还原为一般树,即得到森林。 这部分的图示,请读者自己练习画出。 第十四讲 二叉树、树和森林 A F H B C D E G I J 5 J 5 I 5 H 3 G 1 F 1 E 0 D 0 C 0 B -1 A 0 1 2 3 4 5 6 7 8 9 图4-5-1 树的双亲表示法 A B ^ ^ C ^ ^ D ^ ^ F ^ H ^ ^ ^ I ^ ^ ^ J ^ ^ ^ G ^ ^ A ^ B ^ C D ^ ^ E F ^ ^ G ^ ^ H ^ I ^ J ^ (a)孩子链表表示法 (b)孩子-兄弟链表表示法 图4-5-2 树的链表表示法 A B C D E F G H B A B C D E F G H A B C D E F G

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档