根据前序和中序遍历 给定二叉树

前序(根节点-左节点-右节点):A B D E H C F G

中序(左节点-根节点-右节点):D B E H A F C G

第一步:根据前序就可以判断遍历的第一个就是祖宗节点,为A ,然后我们就可以把中序遍历以A节点分开。

第二步:再看前序A的后一个节点,为B,根据前序的性质为左子树的根节点,所以我们把中序遍历的B再次像之前那样截取出来。

(由以上图可知,相信小伙伴们可以知道D就是左边的节点了,我就不判断了,我们直接看后面。)

第四步:ABD根据前序全部遍历完毕。再次依据上述方法构造左子树。在前序遍历和中序遍历H都在E的右边,为E的右节点。

第五步:根据前序下一个字母为C,那么右子树的根节点就为C,然后再根据中序排序找出字母割分左右。

全部步骤都已完成,相信家人们都看懂了hh,接着我们来看下一个。

根据后序和中序遍历 给定二叉树

我们还是用之前的那个二叉树(因为本作者想不出更好的了hh)

中序(左节点-根节点-右节点):D B E H A F C G
后序(左节点-右节点-根节点):D H E B F G C A

第一步:跟上面的方法一样先找祖宗节点,根据后序的性质,最后一个为祖宗节点,为A。然后我们割分中序的左右子树。

第二步:根据上面的区分我们同时割分后序,把左右子树的节点区分出来。

第三步:由第二步可知,C和B为右子树和左子树的根节点,区分FG和DHE。画出中序的B和C节点,可以判断这两个节点左右节点各为多少。

最后一步:只有EH的判断了,根据**中序排序(左节点-根节点-右节点)的规律,为以防万一,再加上后序排序(左节点-右节点-根节点)**的规律。先以后序来看,E是根节点,那么H因为排在E的前面就不太清楚是E的左还是右节点,再来看中序,中序的H排在E的后面,我们就可以判定H是E的右节点,这是因为中序是左节点-根节点-右节点,如果H是E的左节点那必然排在E的前面,中序先遍历左节点。(这一步可能会让人难以理解一点,大家可以多分析几遍画画图会更利于理解(づ ̄3 ̄)づ╭❤~)。

完结✿✿ヽ(°▽°)ノ✿撒花!!!如果看了有用的话记得三连点赞哦,爱你!

如何给定二叉树的2个遍历序列(前序中序,中序后序),确定二叉树(方法详解)相关推荐

  1. 9判断整数序列是不是二元查找树的后序遍历结果

    转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4252095.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己 ...

  2. C/C++ 二叉树的非递归遍历(前序、中序、后序非递归遍历)

     二叉树的非递归遍历C/C++实现:   非递归先序遍历代码: void PreOrderTraversal (struct tree* root) { //非递归先序遍历struct tree* t ...

  3. 二叉树排序--简单明了(知道前序后续求中序..)

    前序.中序.后序遍历的特性: 前序遍历: 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历: 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 后序遍历: 1.后序遍历左子树 2 ...

  4. 二叉树的构造(前序+中序)---(后序 + 中序)

    二叉树的构造(前序+中序)-(后序 + 中序) 思路:要对前序+中序(后序+中序)的构建树的动态过程要了解,思路比较简单,在了解了这个过程之后,理解下面代码就容易了. 过程 参考图: 前序 + 中序: ...

  5. Python精讲:在Python中遍历字典的三大方法详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中遍历字典的三大方法详解>.本知识点主要内容有:使用字典对象的items()方法可以遍历字典的项和字典的&qu ...

  6. golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法详解...

    Golang 实现 PHP里的 serialize() . unserialize() 安装 go get -u github.com/techleeone/gophp/serialize 用法 pa ...

  7. ES5和ES6数组遍历方法详解

    ES5和ES6数组遍历方法详解 在ES5中常用的10种数组遍历方法: 1.原始的for循环语句 2.Array.prototype.forEach数组对象内置方法 3.Array.prototype. ...

  8. java+getactionmap_Struts2 使用OGNL遍历map方法详解

    一.Action中的代码:MapAction.java package com.zx.demo.action; import java.util.ArrayList; import java.util ...

  9. python list遍历删除,对python list 遍历删除的正确方法详解

    在遍历list的时候,删除符合条件的数据,可是总是报异常,代码如下: num_list = [1, 2, 3, 4, 5] print(num_list) for i in range(len(num ...

  10. jquery遍历多个li_21个jQuery遍历节点方法详解

    本篇教程介绍了21个jQuery遍历节点方法详解,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入. < 1.children()方法:$('div').children( ...

最新文章

  1. python代码画简单图-python绘制简单彩虹图
  2. 他是绝世天才,却只开了半辈子的挂!死后惨遭封号200年,这就是和牛顿抬杠的下场.........
  3. 小觅双目相机如何使用_MYNT EYE S小觅双目摄像头标准(彩色)版结构光双目深度惯导相机3D...
  4. 腾讯这套SpringMVC面试题你懂多少(面试题和答案)
  5. CMSSDK功能介绍和关联用户系统
  6. springmvc中的session:不比对数据库自动登陆
  7. Linux系统基础原理
  8. 正定矩阵和半正定矩阵
  9. 线性代数 --- 矩阵求逆的4种方法
  10. java九宫格案例讲解_Java实现九宫格的教程详解
  11. (转)练好太极拳 基本功是必经之路
  12. 给windows7系统盘瘦身
  13. C++实现五子棋游戏
  14. epub to mobi转换器
  15. EDM营销进行消费场景布置的案例分享
  16. 数睿数据受邀参与中俄数字经济高峰论坛,并发布企业级无代码新场景
  17. Conan软件包管理器的Qt 6.2.4软件包
  18. mac:设置多久后息屏
  19. 动态内存与静态内存的区别
  20. char *a【】详解

热门文章

  1. 华为云业务部总经理陶志强:科技让教育更美好
  2. 用应用创造社会正能量
  3. 每个社交产品都逃不过的劫,包括支付宝
  4. Qt/C++ 项目实战模仿酷狗之实现 换肤(二)
  5. TIMO后台管理系统—基于SpringBoot开发
  6. Mac book pro2014 雷雳有线网络获取不到地址
  7. CocoaPods安装指定版本
  8. 项目管理英语词汇总结·二十一
  9. 全球及中国CVD金刚石散热器行业运行分析及十四五发展战略报告2022年版
  10. 小米Android岗的面试之旅,幸斩Offer