已知中序和前序(或后序)遍历结果生成树
来源:互联网 发布:手机自动关机软件 编辑:程序博客网 时间:2024/06/04 20:04
这种题一般有二种形式,共同点是都已知中序序列。如果没有中序序列,是无法唯一确定一棵树的,证明略。
一、已知二叉树的前序序列和中序序列,求解树。
1、确定树的根节点。树根是当前树中所有元素在前序遍历中最先出现的元素。
2、求解树的子树。找出根节点在中序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边为空,则该方向子树为空;若根节点左边和右边都为空,则根节点已经为叶子节点。
3、递归求解树。将左子树和右子树分别看成一棵二叉树,重复1、2、3步,直到所有的节点完成定位。
二、已知二叉树的后序序列和中序序列,求解树。
1、确定树的根。树根是当前树中所有元素在后序遍历中最后出现的元素。
2、求解树的子树。找出根节点在中序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边为空,则该方向子树为空;若根节点左边和右边都为空,则根节点已经为叶子节点。
3、递归求解树。将左子树和右子树分别看成一棵二叉树,重复1、2、3步,直到所有的节点完成定位。
举例说明:根据已知求解二叉树
中序序列 HLDBEKAFCG
后序序列 LHDKEBFGCA
1、在后序序列LHDKEBFGCA中最后出现的元素为A,HLDBEK|A|FCG
2、在后序序列LHDKEB中最后出现的元素为B,HLD|B|EK|A|FCG
3、在后序序列LHD中最后出现的元素为D,HL|D|B|EK|A|FCG
4、在后序序列LH中最后出现的元素为H,H|L|D|B|EK|A|FCG
5、在后序序列KE中最后出现的元素为E,H|L|D|B|E|K|A|FCG
5、在后序序列FGC中最后出现的元素为C,H|L|D|B|E|K|A|F|C|G
6、所有元素都已经定位,二叉树求解完成。
A / \ B C / \ / \ D E F G / \ H K \ L
代码如下:
100
102
104
- 已知中序和前序(或后序)遍历结果生成树
- 二叉树遍历问题:已知中序遍历和后序遍历结果,求前序遍历结果
- 二叉树遍历---已知前序遍历和中序遍历求其后序
- 智能手机知名浏览器面试题目---已知树的前序遍历和中序遍历,求树的后序遍历结果
- 已知前序遍历和中序遍历的结果求后序遍历
- 二叉树——已知前(后)序遍历和中序遍历,求解树
- 已知二叉树的前序/后序遍历和中序遍历,求后序/前序遍历
- 已知二叉树的前序/后序遍历和中序遍历,求后序/前序遍历
- 已知二叉树的前序/后序遍历和中序遍历,求后序/前序遍历
- 已知二叉树的前序/后序遍历和中序遍历,求后序/前序遍历
- 已知二叉树的前序/后序遍历和中序遍历,求后序/前序遍历
- 已知中序和后序||前序, 求前,后,层序遍历问题
- 树的遍历-已知中序+(前序|后序)求层次遍历
- 已知后序遍历和中序遍历求解前序遍历
- 已知二叉树的后序/前序遍历和中序遍历,求前序/中序遍历
- 二叉树问题-根据前序遍历结果和中序遍历结果得出后序遍历结果
- 3.9已知二叉树的 前序遍历和中序遍历的结果,重构出原二叉树
- 已知二叉树的前序遍历和中序遍历,求二叉树的后序遍历
- 杭电-1559 最大子矩阵
- 百度快速排名的七大谎言
- 使用ADB更改系统设置中的参数 如背光亮度、休眠时间等
- ios客户端学习-四舍五入保留两位小数
- TCP网络编程接口详细介绍
- 已知中序和前序(或后序)遍历结果生成树
- MongoDB 集群删除
- java中对按钮的事件监听
- 04.2#R基础(系统1)-R的数据结构
- maven settings.xml
- 启动eclipse时sdk报错:sdk\system-images\android-23\android-wear\armeabi-v7a\devices.xml
- 分配任务的时候,要给出需求而不是解决方案
- tomcat定义数据库连接Context.xml
- 【51Nod】1006 - 最长公共子序列Lcs(LCS)