【二叉樹】根據兩種遍歷順序確定樹結構(build-tree)
阿新 • • 發佈:2018-12-25
題目描述
輸入
第1行:二叉樹的前序遍歷順序第2行:中序遍歷順序
輸出
二叉樹的後序遍歷順序
樣例輸入
Copy (如果複製到控制檯無換行,可以先貼上到文字編輯器,再複製)
ABCDEFGH
CBEDAGHF
樣例輸出
輸入
第1行:二叉樹的前序遍歷順序第2行:中序遍歷順序
輸出
二叉樹的後序遍歷順序
樣例輸入
Copy (如果複製到控制檯無換行,可以先貼上到文字編輯器,再複製)
ABCDEFGH
CBEDAGHF
樣例輸出
CEDBHGFA
-------------------------------------------------------------------------------------
估計有很多人最開始都以為只用先序遍歷的資訊,就可以獲取樹的結構。但,如果只用先序遍歷的資訊,將會有很多種不同的樹。
所以說,這樣是不行的。
其實,仔細想一想,便可以發現,我們可以通過先序,獲取整棵樹的根節點,再在中序中找到它。這樣,整個序列就被分為了兩部分,也就是原樹的左子樹和右子樹。
至此,便可以用遞迴求解了。
-----------------------------------------------------------------------------------------
看到這裡,估計大家的第一想法就是建樹。其實,這裡沒有必要建樹。在獲取(子)樹的根節點後,就可以將左子樹和右子樹的後序遍歷遞迴打印出來,最好列印根節點就行了。
這樣一來,省掉了建樹的時間以及儲存這棵樹的記憶體空,一舉兩得。