中序遍历和前序遍历肯定一棵二叉树(笔算)

已知前序遍历序列和中序遍历序列,能够惟一肯定一棵二叉树。
已知后序遍历序列和中序遍历序列,能够惟一肯定一棵二叉树。
可是已知前序遍历序列和后序遍历序列,是不能肯定一棵二叉树的。ide

下面例子经过前序遍历和中序遍历肯定惟一的一棵二叉树。spa

前序遍历:EACBDGF.net

中序遍历:ABCDEFGcode

一、首先根据前序遍历找出根节点是E,而后根据中序遍历能够知道ABCD是E的左子树,FG是E的右子树。blog

 

 

二、而后根据左子树的先序:ACBD,中序:ABCD,肯定A为根结点,无左子树,右子树为BCDget

 

 

三、右子树为BCD,先序:CBD,中序:BCD,肯定C为根结点,B为左子树,右子树为Dclass

 

 

四、右子树为GF,先序:GF,中序:FG,肯定G为根结点,无左子树,右子树为F二叉树

 

 

五、最终的二叉树为:遍历

 

 

后序遍历为:BDCAFGEim

 

后序遍历序列和中序遍历序列,能够惟一肯定一棵二叉树和前中很类似,先根据后序遍历的最后一个元素肯定根结点,而后经过中序遍历分为左右子树,再在子树肯定根结点,以此类推。


原文连接:http://www.javashuo.com/article/p-nqdpodtl-nt.html

 

 

试试你学会了吗?

先序:ABJDECFGHI

中序:JBEDAFHGIC

求后序遍历

答案:

JEDBHZGFCA
View Code
相关文章
相关标签/搜索