如何给定二叉树的2个遍历序列(前序中序,中序后序),确定二叉树(方法详解)
根据前序和中序遍历 给定二叉树
前序(根节点-左节点-右节点):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个遍历序列(前序中序,中序后序),确定二叉树(方法详解)相关推荐
- 9判断整数序列是不是二元查找树的后序遍历结果
转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4252095.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己 ...
- C/C++ 二叉树的非递归遍历(前序、中序、后序非递归遍历)
二叉树的非递归遍历C/C++实现: 非递归先序遍历代码: void PreOrderTraversal (struct tree* root) { //非递归先序遍历struct tree* t ...
- 二叉树排序--简单明了(知道前序后续求中序..)
前序.中序.后序遍历的特性: 前序遍历: 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历: 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 后序遍历: 1.后序遍历左子树 2 ...
- 二叉树的构造(前序+中序)---(后序 + 中序)
二叉树的构造(前序+中序)-(后序 + 中序) 思路:要对前序+中序(后序+中序)的构建树的动态过程要了解,思路比较简单,在了解了这个过程之后,理解下面代码就容易了. 过程 参考图: 前序 + 中序: ...
- Python精讲:在Python中遍历字典的三大方法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中遍历字典的三大方法详解>.本知识点主要内容有:使用字典对象的items()方法可以遍历字典的项和字典的&qu ...
- golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法详解...
Golang 实现 PHP里的 serialize() . unserialize() 安装 go get -u github.com/techleeone/gophp/serialize 用法 pa ...
- ES5和ES6数组遍历方法详解
ES5和ES6数组遍历方法详解 在ES5中常用的10种数组遍历方法: 1.原始的for循环语句 2.Array.prototype.forEach数组对象内置方法 3.Array.prototype. ...
- java+getactionmap_Struts2 使用OGNL遍历map方法详解
一.Action中的代码:MapAction.java package com.zx.demo.action; import java.util.ArrayList; import java.util ...
- python list遍历删除,对python list 遍历删除的正确方法详解
在遍历list的时候,删除符合条件的数据,可是总是报异常,代码如下: num_list = [1, 2, 3, 4, 5] print(num_list) for i in range(len(num ...
- jquery遍历多个li_21个jQuery遍历节点方法详解
本篇教程介绍了21个jQuery遍历节点方法详解,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入. < 1.children()方法:$('div').children( ...
最新文章
- python代码画简单图-python绘制简单彩虹图
- 他是绝世天才,却只开了半辈子的挂!死后惨遭封号200年,这就是和牛顿抬杠的下场.........
- 小觅双目相机如何使用_MYNT EYE S小觅双目摄像头标准(彩色)版结构光双目深度惯导相机3D...
- 腾讯这套SpringMVC面试题你懂多少(面试题和答案)
- CMSSDK功能介绍和关联用户系统
- springmvc中的session:不比对数据库自动登陆
- Linux系统基础原理
- 正定矩阵和半正定矩阵
- 线性代数 --- 矩阵求逆的4种方法
- java九宫格案例讲解_Java实现九宫格的教程详解
- (转)练好太极拳 基本功是必经之路
- 给windows7系统盘瘦身
- C++实现五子棋游戏
- epub to mobi转换器
- EDM营销进行消费场景布置的案例分享
- 数睿数据受邀参与中俄数字经济高峰论坛,并发布企业级无代码新场景
- Conan软件包管理器的Qt 6.2.4软件包
- mac:设置多久后息屏
- 动态内存与静态内存的区别
- char *a【】详解