2014-02-23 126 views
4

如果我有前序遍歷和後序遍歷,我可以構造一棵不一定是二叉樹的樹嗎?喜歡的東西:從前序遍歷和後序遍歷構建樹

預購:KLMOPN

後序:LOPMNK

體形:

K 
/| \ 
L M N 
/\ 
O P 

我讀過,這也不是沒有可能序遍歷的二叉樹,但是有可能只用一個非二叉樹的前序遍歷和後序遍歷呢?

+0

假設Q在後序實際上是一種O?另外,O和P分開了什麼?所有3?或一個字母inpeticular – Lain

+0

可能重複[重建樹從其預先和後序列表](http://stackoverflow.com/questions/1136999/reconstructing-a-tree-from-its-preorder-and-postorder-lists) – Dukeling

回答

1

如果樹在節點中完成(假設它是3節點樹,左,中,右)。 你會寫一個遞歸函數。

Void Transverse(Node n){ 
if(n.left ==null && n.middle==null && n.right ==null){ 
System.out.print(n.value); 
return; 

} 
Transverse(left); 
Transverse(middle); 
Transverse(right); 
System.out.print(n.value); 

} 

這是一些僞代碼(我將假設OP來自M)。這將從您展示的樹中打印出LOPMNK。 (印刷品L)→K→M→O(印刷品O)→M→P(印刷品P)→M(印刷品M)→K→N(印刷品N ) - > k(打印k)。

它會發生的訂單。