根据二叉树的先序、中序、后序遍历构建二叉树-图文详解

这篇具有很好参考价值的文章主要介绍了根据二叉树的先序、中序、后序遍历构建二叉树-图文详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言:根据一颗二叉树,可以得出他的先序、中序、后序三种遍历方式,那么如果我们知道了他的前序、中序、后序遍历,如何绘制出这颗二叉树呢?

1、二叉树三种遍历方式的特性

  1. 特性A,对于前序遍历,第⼀个肯定是根节点;
  2. 特性B,对于后序遍历,最后⼀个肯定是根节点;
  3. 特性C,利⽤前序或后序遍历,确定根节点,在中序遍历中,根节点的两边就可以分出左⼦树和右⼦树;
  4. 特性D,对左⼦树和右⼦树分别做前⾯3点的分析和拆分,相当于做递归,我们就可以重建出完整的⼆叉树;

2、根据二叉树的先序、中序遍历构建二叉树

例:已知一颗二叉树的前序遍历和中序遍历的顺序如下,请绘制出这颗二叉树
前序遍历的顺序是: CABGHEDF
中序遍历的顺序是: GHBACDEF

步骤:
1、第⼀步,我们根据特性A,可以得知根节点是C,然后,根据特性C,我们知道左⼦树是:GHBA,右⼦树是:DEF
根据二叉树的先序、中序、后序遍历构建二叉树-图文详解
2、第⼆步,取出左⼦树,左⼦树的前序遍历是:ABGH,中序遍历是:GHBA,根据特性A和C,得出左⼦树的⽗节点是A,并且A没有右⼦树。
根据二叉树的先序、中序、后序遍历构建二叉树-图文详解
3、第三步,使⽤同样的⽅法,前序是BGH,中序是GHB,得出⽗节点是B,GH是左⼦树,没有右⼦树
根据二叉树的先序、中序、后序遍历构建二叉树-图文详解
4、第四步,前序是GH, 中序是GH, 所以 G是⽗节点, H是右⼦树, 没有左⼦树
根据二叉树的先序、中序、后序遍历构建二叉树-图文详解
5、第五步,回到右⼦树,它的前序是EDF,中序是DEF,依然根据特性A和C,得出⽗节点是E,左右节点是D和F。到此,我们得到了这颗完整的二叉树,如下图所示。
根据二叉树的先序、中序、后序遍历构建二叉树-图文详解

3、根据二叉树的中序、后序遍历构建二叉树

例:已知一颗二叉树的中序遍历和后序遍历的顺序如下,请绘制出这颗二叉树
中序遍历的顺序是: GHBACDEF
后序遍历的顺序是: HGBADFEC

步骤:
1、第⼀步,我们根据特性B,可以得知根节点是C,然后,根据特性C,我们知道左⼦树是:GHBA,右⼦树是:DEF
根据二叉树的先序、中序、后序遍历构建二叉树-图文详解
2、第⼆步,取出左⼦树,左⼦树的后序遍历是:HGBA,中序遍历是:GHBA,根据特性B和C,得出左⼦树的⽗节点是A,并且A没有右⼦树。
根据二叉树的先序、中序、后序遍历构建二叉树-图文详解
3、第三步,使⽤同样的⽅法,后序是HGB,中序是GHB,得出⽗节点是B,GH是左⼦树,没有右⼦树
根据二叉树的先序、中序、后序遍历构建二叉树-图文详解
4、第四步,后序是HG, 中序是GH, 所以 G是⽗节点, H是右⼦树, 没有左⼦树
根据二叉树的先序、中序、后序遍历构建二叉树-图文详解
5、第五步,回到右⼦树,它的后序是DFE,中序是DEF,依然根据特性B和C,得出⽗节点是E,左右节点是D和F。到此,我们得到了这颗完整的二叉树,如下图所示。
根据二叉树的先序、中序、后序遍历构建二叉树-图文详解文章来源地址https://www.toymoban.com/news/detail-455988.html

到了这里,关于根据二叉树的先序、中序、后序遍历构建二叉树-图文详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 二叉树的遍历(先序遍历,中序遍历,后序遍历)递归与非递归算法

    先序遍历:先遍历一颗树的根节点,后遍历左子树,最后遍历右子树     先序遍历序列: 1 - 2 - 4 - 5 - 3 - 6 - 7 分解子问题方法 思路:将一颗二叉树看做两个部分,一个部分是左路节点,另一个部分是左路节点的右子树,先将二叉树的左路节点全部入栈,再依次出栈,出栈的

    2024年02月14日
    浏览(40)
  • 十三、数据结构——二叉树的遍历(先序、中序和后序)详细思路和代码

    在数据结构中,二叉树是一种常用且重要的数据结构。二叉树的遍历是指按照一定顺序访问二叉树的所有节点,常见的遍历方式有前序遍历、中序遍历和后序遍历。本文将详细介绍这三种遍历算法,并介绍最优二叉树。 首先,我们先来了解一下二叉树的基本定义。二叉树是每

    2024年02月15日
    浏览(44)
  • 【数据结构】16 二叉树的定义,性质,存储结构(以及先序、后序、中序遍历)

    一个二叉树是一个有穷的结点集合。 它是由根节点和称为其左子树和右子树的两个不相交的二叉树组成的。 二叉树可具有以下5种形态。 一个二叉树第i层的最大结点数为 2 i − 1 2^{i-1} 2 i − 1 , i ≥ 1 i geq 1 i ≥ 1 每层最大结点可以对应完美二叉树(满二叉树),其所有分支结

    2024年02月20日
    浏览(45)
  • 数据结构——二叉树先序、中序、后序三种遍历

    先序遍历可以想象为,一个小人从一棵二叉树根节点为起点,沿着二叉树外沿,逆时针走一圈回到根节点,路上遇到的元素顺序,就是先序遍历的结果 先序遍历结果为:A B D H I E J C F K G 动画演示: 记住小人沿着外围跑一圈(直到跑回根节点),多看几次动图便能理解    

    2024年02月11日
    浏览(50)
  • 二叉树先序,中序,后序遍历的非递归算法(一)

    思路: 二叉树的前序遍历过程: 从树根开始沿着左子树一直深入,直到最左端无法深入时,返回; 进入最近深入时遇到结点的右子树,再进行如此的深入和返回; 直到最后从根节点的右子树返回到根节点为止; 由其深入返回的过程我们知道可以用一个栈来帮助我们消除递

    2023年04月14日
    浏览(78)
  • 【树】建立二叉链表存储的二叉树+遍历二叉树(先序、中序、后序、层序)

    二叉树的构建利用了递归的原理,在按先序序列构建二叉树时,为了能让电脑知道每个结点是否有左右孩子,我们要对原二叉树进行 扩展 ,明确表示每个结点的左右孩子,若当前结点没有左右孩子,我们用’#\\\'表示。 由普通二叉树----扩展二叉树,如下图: 此时当我们按先序

    2024年02月07日
    浏览(39)
  • 递归和迭代实现二叉树先序、中序、后序和层序遍历

    递归比较简单,直接上代码: ### 1.1 先序遍历 1.2 中序遍历 1.3 后序遍历 能够用递归方法解决的问题基本都能用非递归方法实现。因为递归方法无非是利用函数栈来保存信息,可以寻找相应的数据结构替代函数栈,同样可以实现相同的功能。下面用栈,类比递归方法来统一实

    2024年01月20日
    浏览(41)
  • 数据结构——二叉树的先中后序遍历

    ——本节内容为Bilibili王道考研《数据结构》P43~P45视频内容笔记。 目录 一、二叉树的先中后序遍历 1.先中后序遍历 2.举例  3.先中后序遍历和前中后缀的关系 4.代码实现 5.求遍历序列 6.应用:求树的深度 二、二叉树的层次遍历 1.层次遍历 2.算法思想: 3.算法演示: 4.代码实

    2024年02月12日
    浏览(39)
  • 力扣(144. 二叉树的前序遍历&&94.二叉树的中序遍历&&145. 二叉树的后序遍历)

    题目链接 题目1: 思路:较简单的思路,就是先将左孩子全部入栈,然后出栈访问右孩子,右孩子为空,再出栈,不为空,右孩子入栈,然后再次循环访问左孩子。 题目链接 题目2: 思路:同前序遍历一样,只不过访问结点,改为出栈时访问。 题目3链接 题目3: 思路1:同样

    2024年01月19日
    浏览(52)
  • 树的前序遍历与中序遍历构造二叉树和树的中序遍历与后序遍历构造二叉树

    目录 一.树的前序遍历与中序遍历构造二叉树 1.题目描述 2.问题分析 3.代码实现 二.树的中序遍历与后序遍历构造二叉树 1.题目描述 2.问题分析 3.代码实现 三.问题思考 给定两个整数数组  preorder 和 inorder  ,其中  preorder 是二叉树的 先序遍历 , inorder  是同一棵树的 中序遍

    2023年04月15日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包