已知两种遍历序列求原始二叉树
来源:互联网 发布:tensorflow百度云 编辑:程序博客网 时间:2024/05/22 12:40
已知两种遍历序列求原始二叉树
需要明确的前提条件
- 通过先序和中序可以求出原始二叉树
- 通过中序和后序可以求出原始二叉树
- 但是通过先序和后序无法还原出二叉树
换种说法:
- 只有通过先序中序或者后序中序才可以确定一个二叉树
先来看一个例子,已知先序遍历序列和中序遍历序列求后序遍历:
先序:ABCDEFGH
中序:BDCEAFHG
求后序:
分析:要求后序遍历序列,必须求出原始二叉树
先看先序序列A第一个出现,有先序遍历的定义可以知道A是根结点
再看中序遍历,A的左边是BDCE,而A的右边是FHG
BDCE哪个是根呢?答案还是从先序遍历找,因为先序遍历根最先出现
再看B、D、C、E中在先序遍历中最先出现的是B,所以B是BDCE中的根,
由于B是根,在看中序遍历中B左端没有树,所以DCE是B的右子树
而在DCE中,谁又是根?
同样的我们看先序遍历序列C先出现,所以C是DCE中的根,
而此时在中序遍历中C的左端只有一个D,C的右端只有一个E
根据中序遍历的定义D是C的左子树,E是C的右子树
接着我们再看FHG,F、H、G在先序遍历中最先出现的是F,所以F是FHG中的根,
再回到中序遍历FHG中F左端再没有结点,右端是HG所以HG是F的右子树
再看HG中谁是根,在先序遍历中G先出现,所以G是根
再看中序遍历,G的左端只有一个H,右端没有子树,说明H是G的左子树
这样我们就得到了一个原始二叉树,题目的要求是让求这个二叉树的后序遍历序列,
这样我们可以根据二叉树后序遍历的定义
写出该二叉树的后序遍历序列:DECBHGFA
一个小练习:
先序:ABDGHCEFI
中序:GDHBAECIF
后序结果给出:GHDBEIFCA
5 0
- 已知两种遍历序列求原始二叉树
- 已知两种遍历序列求原始二叉树
- 二叉树 已知 两种遍历序列 求第三种遍历序列
- 【郝斌数据结构自学笔记】70-74_已知两种遍历序列求原始二叉树概述_已知先序和中序求后序_已知中序和后序求先序_树的应用简单介绍
- 二叉树:由已知两种遍历求未知遍历
- 已知二叉树的两种遍历序列重建树
- 已知两种二叉树的遍历,求第三种
- 二叉树面试题--已知二叉树的两种遍历序列,求出另一种遍历序列
- 二叉树面试题--已知二叉树的两种遍历序列,求出另一种遍历序列
- 二叉树 已知两种遍历恢复二叉树
- 已知前序遍历序列和中序遍历序列,求二叉树的后序遍历
- 已知某二叉树的某两种遍历序列,求另一种遍历序列面试题解法总结(转)
- 二叉树的遍历(前序 中序 后序)和已知两种遍历顺序求另外一种遍历顺序(含实例)
- 由已知的层次遍历序列构建二叉树
- 已知二叉树前、中序遍历,求…
- 二叉树给出两种遍历序列(含中序遍历)创建一颗先序遍历二叉树
- 已知二叉树的前序与中序遍历序列,求重建后的二叉树(即是二叉树的重建)
- 二叉树 知道其他两种遍历方式求另一种
- HDU5297莫比乌斯函数,容斥原理从1到n中数字中去掉形如a^r的数字
- Android Scroller简单用法
- P-Called-Party-ID头域
- 析构函数什么情况下要定义为虚函数?
- HDOJ 1095 A+B for Input-Output Practice (VII)(水题)
- 已知两种遍历序列求原始二叉树
- HDU5298立体几何
- ARM Linux 3.x的设备树(Device Tree)
- 5289 Assignment (RMQ+二分区间)
- 在 Android 应用中使用 HTML Parser 便捷的解析 html 内容
- 相似图片搜索的原理
- 鼠标经过三维物体时放大并旋转,离开时停止旋转,恢复到原来大小
- KMP模板
- 黑马程序员——Java基础-多线程