已知二叉树的中序序列和前序序列(或后序)求解树
来源:互联网 发布:数据库置疑修复语句 编辑:程序博客网 时间:2024/05/22 00:08
文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。
今天数据结构课讲树的存储和遍历,老师讲的很简单,也没什么代码要发...唯一看到一个比较重要的东西,总结一下算法好了。
这种题一般有二种形式,共同点是都已知中序序列。如果没有中序序列,是无法唯一确定一棵树的,证明略。
一、已知二叉树的前序序列和中序序列,求解树。
1、确定树的根节点。树根是当前树中所有元素在前序遍历中最先出现的元素。
2、求解树的子树。找出根节点在前序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边为空,则该方向子树为空;若根节点左边和右边都为空,则根节点已经为叶子节点。
3、递归求解树。将左子树和右子树分别看成一棵二叉树,重复1、2、3步,直到所有的节点完成定位。
二、已知二叉树的后序序列和中序序列,求解树。
1、确定树的根。树根是当前树中所有元素在后序遍历中最后出现的元素。
2、求解树的子树。找出根节点在后序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边为空,则该方向子树为空;若根节点左边和右边都为空,则根节点已经为叶子节点。
3、递归求解树。将左子树和右子树分别看成一棵二叉树,重复1、2、3步,直到所有的节点完成定位。
举例说明:根据已知求解二叉树
中序序列 BDCEAFHG
后序序列 DECBHGFA
1、BDCEAFHG在后序序列中最后出现的元素为A,BDCE|A|FHG
2、BDCE在后序序列中最后出现的元素为B,|B|DCE|A|FHG
3、FHG在后序序列中最后出现的元素为F,|B|DCE|A||F|HG
4、DCE在后序序列中最后出现的元素为C,|B|D|C|E|A||F|HG
5、HG在后序序列中最后出现的元素为G,|B|D|C|E|A||F|H|G|
6、所有元素都已经定位,二叉树求解完成。
A / / B F / / C G / / / D E H
以前还写过一篇文章《求二叉树的后序遍历 C语言 数组实现》,是已知二叉树的前序遍历和后序遍历,求二叉树的后序遍历。
- 已知二叉树的中序序列和前序序列(或后序)求解树
- 已知二叉树的中序序列和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序(或者后序)序列求解树
- 已知二叉树的前序序列和中序序列,求二叉树的后序序列
- 已知二叉树的前序和中序序列,不建立二叉树来输出后序序列
- 已知前序遍历序列和中序遍历序列,求二叉树的后序遍历
- 二叉树-已知前序序列和中序序列,求后序序列
- 二叉树已知先序序列(后序序列)、中序序列求解后序序列(先序序列)
- 根据中序序列和前序序列,求二叉树的后序序列
- 根据二叉树的前序序列和中序序列得到后序序列
- 已知二叉树的前序和中序序列,构建二叉树并求后序序列,java实现。
- 最小生成树Prim算法朴素版 C语言实现
- 最小生成树kruskal算法并查集版 C语言实现
- C语言 使用文件输入/输出数据
- 二叉树任意两点间最短路径长度 C语言暴力版
- 二叉树的非递归遍历 C语言版
- 已知二叉树的中序序列和前序序列(或后序)求解树
- C Primer Plus(第五版)中文版勘误
- 手算KMP匹配的Next值和Nextval值
- 定时每天备份mysql并定时删除上月记录(脚本)
- js判断checkbox是否至少有选择一项
- 线性表玩具之链表版本(C语言)
- 心算(手算)开平方,比较有用
- 线性表玩具之顺序表版本(C语言)
- 目前:菜鸟