已知前序遍历序列和中序遍历序列,能够惟一肯定一棵二叉树。
已知后序遍历序列和中序遍历序列,能够惟一肯定一棵二叉树。
可是已知前序遍历序列和后序遍历序列,是不能肯定一棵二叉树的。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