- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章 树和二叉树 四类基本结构: 6.3 二叉树的遍历与线索化 6.3.3 基于栈的递归消除 6.3.5 线索二叉树 何谓线索二叉树? 线索链表的遍历算法 如何建立线索链表? 二叉链表类型表述如下: 6.4树、森林和二叉树的关系 双亲表示法类型表述如下: 孩子表示法类型表述如下: 孩子兄弟表示法类型表述如下: 6.4.3 树和森林的遍历 6.4.3 哈曼树及其应用 本章学习重点 每个结点设有两个指针域,分别指向该结点的第一个孩子和下一个兄弟(右兄弟),又称为树的二叉链表表示法。 三、孩子兄弟表示法: 第一个孩子 结点 信息 下一个兄弟 FirstChild data NextSibing A B D E F C G A B C D G E F 树与二叉树均可用二叉链表作为存储结构,则以二叉链表为媒介可导出树与二叉树之间的一个对应关系——即给定一棵树,可以找到唯一一棵二叉树与之对应。 【注意】:和树对应的二叉树,其左、右子树的概念已改变为: 左是孩子,右是兄弟。 6.4.2 树与二叉树的转换 第一个孩子 下一个兄弟 FirstChild data NextSibing 左孩子 右孩子 LChild data RChild 1、加线:在各亲兄弟之间加一虚线。 2、抹线:抹掉(除第一个孩子外)该结点到其余孩子之间的连线。 3、旋转:新加上去的虚线改实线且均向右斜(rchild),原有的连线均向左斜(lchild),使之结构层次分明。 一、树 二叉树 树→二叉树举例: A B C D G E F H × × × A B E D H C F G 1、加线:在各亲兄弟之间加一虚线。 2、抹线:抹掉(除第一个孩子外)该结点到其余孩子之间的连线。 3、旋转:新加上去的虚线改实线且均向右斜(rchild),原有的连线均向左斜(lchild),使之结构层次分明。 1、将各棵树分别转换为二叉树。 2、按给出森林中树的次序,依次将后一 棵二叉树作为前一棵二叉树根结点的右子树,则第一棵树的根结点是转换后二叉树的根。 二、森林 二叉树 森林→二叉树举例: 1、将各棵树分别转换为二叉树 2、按给出森林中树的次序,依次将后一棵二叉树作为前一棵二叉树根结点的右子树,则第一棵树的根结点是转换后二叉树的根。 G H I J A B C D E F A B D C F E G H I J A B D C F E G H I J 前提:二叉树的根结点无右孩子 1、加线:若某结点i是双亲结点的左孩子,则将该结点的右孩子以及当且仅当连续地沿着此右孩子的右链不断搜索到的所有右孩子都分别与结点i的双亲用虚线连起来。 2、抹线:抹掉原二叉树中所有双亲结点 与右孩子的连线。 3、归整化:将图形归整化,使各结点按层次排列且将加上去的虚线变成实线。 三、二叉树 树 二叉树→树举例: A B E D H C F G 1、加线:若某结点i是双亲结点的左孩子,则将该结点的右孩子以及当且仅当连续地沿着此右孩子的右链不断搜索到的所有右孩子都分别与结点i的双亲用虚线连起来。 2、抹线:抹掉原二叉树中所有双亲结点与右孩子的连线。 3、归整化:将图形归整化,使各结点按层次排列且将加上去的虚线变成实线。 × × × A B D C E G F H 前提:二叉树的根结点必有右孩子 1、抹线:将二叉树的根结点与其右孩子 i的连线当且仅当连续地沿着i的右链不断 搜索到的所有右孩子间的连线全部抹掉,这样得到若干 棵孤立的二叉树。 2、还原:将各棵孤立的二叉树按二叉树 还原为一般树的方法还原为树。 四、二叉树 森林 二叉树→森林举例: 1、抹线:将二叉树的根结点与其右孩子i的连线当且仅当连续地沿着i的右链不断搜索到的所有右孩子间的连线全部抹掉,这样得到若干棵孤立的二叉树。 2、还原:将各棵孤立的二叉树按二叉树还原为一般树的方法还原为树。 A B D C F E G H I J G H I J A B C D F × × × E 一、树的遍历 二、树的遍历算法实现 三、森林的遍历 1. 树的遍历可有三条搜索路径: 按层次遍历: 先根(序)遍历: 后根(序)遍历: 若树不空,则先访问根结点,然后依次先根遍历各棵子树。 若树不空,则先依次后根遍历各棵子树,然后访问根结点。 若树不空,则自上而下自左至右访问树中每个结点。 思考:为何没有中根遍历? 1.树的遍历 A B C D G E F H 按层次遍历: 先根(次序)遍历: 后根(次序)遍历: 若树不空,则先访问根结点,然后依次先根遍历各棵子树。 若树不空,则先依次后根遍历各棵
文档评论(0)