已知二叉树的中序序列,后序序列,怎么求前序序列

作者&投稿:蔡点 (若有异议请与网页底部的电邮联系)
已知二叉树的先序,中序和后序序列如下怎么求~

 第一步,root最简单,前序遍历的第一节点G就是root。
  
  第二步,继续观察前序遍历GDAFEMHZ,除了知道G是root,剩下的节点必然是root的左右子树之外,没法找到更多信息了。
  
  第三步,那就观察中序遍历ADEFGHMZ。其中root节点G左侧的ADEF必然是root的左子树,G右侧的HMZ必然是root的右子树。
  
  第四步,观察左子树ADEF,左子树的中的根节点必然是大树的root的leftchild。在前序遍历中,大树的root的leftchild位于root之后,所以左子树的根节点为D。
  
  第五步,同样的道理,root的右子树节点HMZ中的根节点也可以通过前序遍历求得。在前序遍历中,一定是先把root和root的所有左子树节点遍历完之后才会遍历右子树,并且遍历的右子树的第一个节点就是右子树的根节点。

确定树的根。树根是当前树中所有元素在后序遍历中最后出现的元素。
求解树的子树。找出根节点在中序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边为空,则该方向子树为空;若根节点左边和右边都为空,则根节点已经为叶子节点。
递归求解树。将左子树和右子树分别看成一棵二叉树,重复1、2、3步,直到所有的节点完成定位。
一棵深度为k,且有2^k-1个结点的二叉树,称为满二叉树。这种树的特点是每一层上的结点数都是最大结点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且或者最后一层是满的,或者是在右边缺少连续若干结点。

扩展资料:
若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。
除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。
平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
参考资料来源:百度百科--二叉树

确定树的根。树根是当前树中所有元素在后序遍历中最后出现的元素。

求解树的子树。找出根节点在中序遍历中的位置,根左边的所有元素就是左子树,根右边的所有元素就是右子树。若根节点左边或右边为空,则该方向子树为空;若根节点左边和右边都为空,则根节点已经为叶子节点。

递归求解树。将左子树和右子树分别看成一棵二叉树,重复1、2、3步,直到所有的节点完成定位。

一棵深度为k,且有2^k-1个结点的二叉树,称为满二叉树。这种树的特点是每一层上的结点数都是最大结点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且或者最后一层是满的,或者是在右边缺少连续若干结点。

扩展资料:

若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。

除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。

平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

参考资料来源:百度百科--二叉树



  第一步,root最简单,前序遍历的第一节点G就是root。
  
  第二步,继续观察前序遍历GDAFEMHZ,除了知道G是root,剩下的节点必然是root的左右子树之外,没法找到更多信息了。
  
  第三步,那就观察中序遍历ADEFGHMZ。其中root节点G左侧的ADEF必然是root的左子树,G右侧的HMZ必然是root的右子树。
  
  第四步,观察左子树ADEF,左子树的中的根节点必然是大树的root的leftchild。在前序遍历中,大树的root的leftchild位于root之后,所以左子树的根节点为D。
  
  第五步,同样的道理,root的右子树节点HMZ中的根节点也可以通过前序遍历求得。在前序遍历中,一定是先把root和root的所有左子树节点遍历完之后才会遍历右子树,并且遍历的右子树的第一个节点就是右子树的根节点。
  如何知道哪里是前序遍历中的左子树和右子树的分界线呢?通过中序遍历去数节点的个数。
  在上一次中序遍历中,root左侧是A、D、E、F,所以有4个节点位于root左侧。那么在前序遍历中,必然是第1个是G,第2到第5个由A、D、E、F过程,第6个就是root的右子树的根节点了,是M。
  
  第六步,观察发现,上面的过程是递归的。先找到当前树的根节点,然后划分为左子树,右子树,然后进入左子树重复上面的过程,然后进入右子树重复上面的过程。最后就可以还原一棵树了。
  第七步,其实,如果仅仅要求写后续遍历,甚至不要专门占用空间保存还原后的树。只需要稍微改动第六步,就能实现要求。仅需要把第六步的递归的过程改动为如下:
  1 确定根,确定左子树,确定右子树。
  2 在左子树中递归。
  3 在右子树中递归。
  4 打印当前根。

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

已知二叉树的中遍历序列是序DBEACGF后续遍历序列是DEBGFCA画二叉树?
答:已知二叉树的中序遍历序列是DBEACGF,后序遍历序列是DEBGFCA,画出的二叉树是这样的:

已知某二叉树的中序遍历序列为CBGEAFHD,后序遍历序列为CGEBHFDA,试写 ...
答:A是整个树的根,CBGE为左子树,FHD为右子树 CBGE中B为根,C为左子树,GE为右子树 FHD中D为根,FH为左子树,无右子树 GE中E为根,G为左子树,无右子树 FH中F为根,无左子树,H为右子树 前序结果为 ABCEGDFH

设一棵二叉树的中序遍历序列为BDCA,后序遍历序列为DBAC,则这棵二叉树...
答:这个先根据后序遍历确定根节点为C。再根据中序遍历得到根节点的右孩子为A。然后根据后序遍历确定,B是根节点的左孩子,D是B的孩子。再根据中序遍历,得到D是B的右孩子。根据这个画出二叉树。前序遍历结果是:CBDA。

数据结构中已知前序序列和中序序列,怎么得出后序序列
答:一般是先还原二叉树,再后序遍历就可以得到后序序列了,还原过程如下:首先在前序序列第一个就是根,拿到中序序列中,就可以将中序序列分解成3个部分:左子树的中序、根、右子树的中序 再分别将左子树的中序和右子树的中序回到前序序列,这些子树的前序序列里面,子树的根依然排在第一位,再次...

已知二叉树的中序遍历结果: BDCEAFHG。后序遍历结果:DECBHGFA,画出此二 ...
答:1、先求原始二叉树,后序遍历中最后出现的是根,所以A是整棵树的根,在结合中序遍历来看 BDCE是A的左子树,而FHG是A的右子树;2、BDCE序列中B是整个序列根,因为后序遍历中B最后出现。此时再看中序中根B左端没有左子 树,右端有DCE,所以DCE是B的右子树 ;3、再看D、C、E在后序遍历中C...

已知一棵二叉树的中序序列和后序序列分别为GLDHBEIACJFK和LGHDIEBJKFCA...
答:二叉树:A / \ B C / \ \ D E F / \ \ / \ G H I J K \ L 转化为森林:A C F K / | \ | B E I

【紧急求助】某二叉树的前序序列为ABCD,中序序列为DCBA,则后序序列为...
答:详解为:前序序列的顺序是根、左、右,序列ABCD第一个一定是根结点,A是根节点。中序序列顺序是左、根、右,因为A是根节点,所以DCB位于A左侧,A右侧没有结点,B是DCB三个结点中的根。前序序列是中左右,根结点为A;中序序列是左中右,左子树BCD;遵循遍历序列的规则排列出二叉树,得出后序遍历...

某二叉树的中序遍历序列为CBADE,后序遍历序列为CBADE,则前序遍历序列为...
答:因此后序遍历序列的最后一个元素就是二叉树的根节点,即E,于是CBAD为E的后代节点。现在继续查看中序遍历,中序遍历的意思是,先访问父节点的左孩子,再访问父节点,最后访问右孩子。因此在根节点E的左边的CBAD为它的左孩子,它没有右孩子。然后再次回到后序遍历序列,因为我们已经知道E为根节点了,...

已知某二叉树的后序遍历和中序遍历的序列分别为?
答:您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!展开全部 已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历是DGEBHFCA。前序遍历的第一个节点为根节点,由前序遍历可知,A为根节点。中序遍历的根节点前面...

某二叉树中序序列为ABCDEFG,后序序列为BDCAFGE,则前序序列是?
答:若二叉树非空,则依次执行如下操作:(1) 访问根结点;(2) 遍历左子树;(3) 遍历右子树。3.后序遍历得递归算法定义:若二叉树非空,则依次执行如下操作:(1)遍历左子树;(2)遍历右子树;(3)访问根结点。过程:第一步先根据后序遍历的最后一个结点是根结点,判断E为根,根据中序则ABCD在E的...