已知前序遍歷序列和中序遍歷序列,能夠惟一肯定一棵二叉樹。
已知後序遍歷序列和中序遍歷序列,能夠惟一肯定一棵二叉樹。
可是已知前序遍歷序列和後序遍歷序列,是不能肯定一棵二叉樹的。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