第九讲:二叉树.pptVIP

  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文档。上传文档
查看更多
第九讲:二叉树

第九讲 第9讲 二叉树遍历 本节重点 二叉树的先根遍历DLR 二叉树的中根遍历LDR 二叉树的后根遍历LRD 由两个序列构造二叉树 二叉树遍历的应用举例 学习目标 掌握二叉树的三种遍历算法 指定一棵二叉树能够熟悉的写出三种遍历序列 可以灵活的应用遍历算法,实现复杂的算法,例如查找某个结点 由两组序列,能够构造一棵二叉树 知识回顾 树的4种表示方法是? 树的存储结构有几种形式? 9.1 二叉树的遍历操作 遍历操作:无重复无遗漏的访问 二叉树的遍历:指的是从根节点出发,按照某种次序依次访问二叉树中的所有节点,使得每个节点被访问一次且仅被访问一次 前序遍历 中序遍历 后序遍历 9.1 二叉树的遍历操作 前序遍历(根遍历DLR)递归算法实现 若二叉树为空,则空操作返回,否则 (1)访问根节点 (2)前序遍历根节点的左子树 (3)前序遍历根节点的右子树 前序遍历(根遍历DLR)递归算法演示 9.1 二叉树的遍历操作 练习 前序遍历下列二叉树,写出前序遍历序列 非递归前序遍历 9.1 二叉树的遍历操作 前序遍历(根遍历DLR ) 9.1 二叉树的遍历操作 前序分析:结点的左儿子、左孙子、左后代、…… 将连续输出。结点的右儿子将在结点、结点的左 子树全部输出之后才输出。 9.1 二叉树的遍历操作 中序遍历(LDR)---递归算法 若二叉树为空,则空操作返回,否则 (1)按中序遍历根节点的左子树 (2)访问根节点 (3)中序遍历根节点的右子树 中序遍历( LDR )递归算法演示 9.1 二叉树的遍历操作 中序遍历(LDR ) 9.1 二叉树的遍历操作 中序分析:最先输出的结点是根结点的最左的左后代。将二叉树中的结点投影到水平轴线上,则得到 中序遍历的序列。 中根遍历的非递归算法 9.1 二叉树的遍历操作 后序遍历(LRD) 若二叉树为空,则空操作返回,否则 (1)后序遍历根节点的左子树 (2)后序遍历根节点的右子树 (3)访问根节点 二叉树后序遍历的非递归算法 二叉树后序遍历的非递归算法 算法的伪代码实现如下 非递归后序遍历 9.1 二叉树的遍历操作 后序遍历(LRD ) 9.1 二叉树的遍历操作 后序分析:根结点(或子树的根结点)将在它的左、右子树的结点输出之后。因此,根结点(或子树 的根结点)在后序序列中的序号等于它的左右子树的结点个数 +左右子树中的最先被访问 的结点的序号。注意,结点、右父亲、右祖父、…… 将连续输出。 9.1 二叉树的遍历操作 任意一颗二叉树的任何一种遍历序列都是唯一的。 由二叉树的前序序列( DLR )和中序序列( LDR )可以唯一的确定一颗二叉树。 由二叉树的后序序列( LRD )和中序序列( LDR )可以唯一的确定一颗二叉树。 9.1 二叉树的遍历操作 例题:已知一颗二叉树的前序遍历序列( DLR )和中序遍历( LDR )序列分别为: ABCDEFGH和CDBAFEHG,试画出该二叉树。 9.1 二叉树的遍历操作 例题:已知一颗二叉树的后序遍历序列( LRD )和中序遍历序列( LDR )分别为: HDBFECA 和DHBAFCE,试画出该二叉树。 9.2 二叉树的遍历操作 层序遍历 在进行层序遍历的时候,对某一个层的节点访问后,在按照它们的访问次序对各个节点的左孩子和右孩子顺序访问,这样一层一层进行,先访问的节点,其左右孩子也要访问。 9.2 二叉树的遍历操作 层序遍历 9.2 二叉树的遍历操作 层序遍历 9.3.2 二叉树的基本运算算法实现 写出下面二叉树的括号表示法 9.3 二叉树遍历操作应用举例 算法 按先序序列建立二叉树的二叉链表 abd…ef..g.. 建立根结点 先序建立左子树 先序建立右子树 9.4二叉树的应用 设有八枚硬币,分别表示为a,b,c,d,e,f,g,h,其中有且仅有一枚硬币是假币,并且假币的重量与真币的重量不同,假币轻。现要求以天平为工具,用最少的比较次数挑选出假币,编写算法实现! 9.4二叉树的应用 解决方法:把硬币分为两组,如果n为奇数,则剩下一枚硬币,然后把两组硬币分别放到天平的两端,如果两组硬币相同,那么留下的硬币就是假币;否则,用同样的方法对较轻的硬币进行同样的处理,因为假币一定在较轻的那组里 9.4二叉树的应用 解决方法:设八枚硬币为{a,b,c,d,e,f,g,h},把八枚硬币分为两组 9.4二叉树的应用 1 2 3 8 7 6 5 4 10 9 后序遍历的序列为:8 ,9, 4, 10, 5, 2, 6, 7, 3, 1 根节点 A BCD FEHG A B C F E D H 层序遍历的操作有点类似于队列的操作原则,因此在进行层序遍历 时,可以设

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档