已知二叉树的中序序列和前序序列(或后序)求解树
2009-10-31 11:24
183 查看
文章作者: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、所有元素都已经定位,二叉树求解完成。
以前还写过一篇文章《求二叉树的后序遍历 C语言 数组实现》,是已知二叉树的前序遍历和后序遍历,求二叉树的后序遍历。
今天数据结构课讲树的存储和遍历,老师讲的很简单,也没什么代码要发...唯一看到一个比较重要的东西,总结一下算法好了。
这种题一般有二种形式,共同点是都已知中序序列。如果没有中序序列,是无法唯一确定一棵树的,证明略。
一、已知二叉树的前序序列和中序序列,求解树。
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语言 数组实现》,是已知二叉树的前序遍历和后序遍历,求二叉树的后序遍历。
相关文章推荐
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序序列和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序(或者后序)序列求解树
- 已知二叉树的中序序列和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 已知二叉树的中序和前序序列(或后序)求解树
- 二叉树已知先序序列(后序序列)、中序序列求解后序序列(先序序列)
- 二叉树系列(一):已知先序遍历序列和中序遍历序列,求后序遍历序列
- 已知二叉树的先序遍历和中序遍历序列,输出后序遍历序列
- 已知二叉树先序、中序(中序、后序)遍历序列,输出后序(先序)遍历序列
- 已知先序遍历和中序遍历求解二叉树
- 二叉树中,已知中序和后序序列,求先序序列
- 二叉树系列(一):已知先序遍历序列和中序遍历序列,求后序遍历序列
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 已知二叉树的先序遍历和中序遍历序列求后序遍历序列
- 学习笔记——已知二叉树的先序中序求后序、中序后序求先序的遍历序列