1. 程式人生 > >【二叉樹】根據兩種遍歷順序確定樹結構(build-tree)

【二叉樹】根據兩種遍歷順序確定樹結構(build-tree)

題目描述
輸入
第1行:二叉樹的前序遍歷順序第2行:中序遍歷順序


輸出
二叉樹的後序遍歷順序


樣例輸入
Copy (如果複製到控制檯無換行,可以先貼上到文字編輯器,再複製)


ABCDEFGH
CBEDAGHF
樣例輸出

CEDBHGFA

-------------------------------------------------------------------------------------

估計有很多人最開始都以為只用先序遍歷的資訊,就可以獲取樹的結構。但,如果只用先序遍歷的資訊,將會有很多種不同的樹。

所以說,這樣是不行的。

其實,仔細想一想,便可以發現,我們可以通過先序,獲取整棵樹的根節點,再在中序中找到它。這樣,整個序列就被分為了兩部分,也就是原樹的左子樹和右子樹。

至此,便可以用遞迴求解了。

-----------------------------------------------------------------------------------------

看到這裡,估計大家的第一想法就是建樹。其實,這裡沒有必要建樹。在獲取(子)樹的根節點後,就可以將左子樹和右子樹的後序遍歷遞迴打印出來,最好列印根節點就行了。

這樣一來,省掉了建樹的時間以及儲存這棵樹的記憶體空,一舉兩得。