根據前序和中序推出後序

2022-02-05 06:13:17 字數 844 閱讀 9170

最近面試總遇到這種根據給出的兩類序遍歷,然後求按另一種形式序的遍歷。看來有必要好好總結下這個知識點,省的每次筆試時都得花不少時間推導。

首先,我們看看前序、中序、後序遍歷的特性: 

前序遍歷:(根—>左—>右)

1.訪問根節點 

2.前序遍歷左子樹 

3.前序遍歷右子樹 

中序遍歷:(左—>根—>

)1.中序遍歷左子樹 

2.訪問根節點 

3.中序遍歷右子樹 

後序遍歷:(左—>右—>

)1.後序遍歷左子樹 

2.後序遍歷右子樹 

3.訪問根節點

三序中知道其中兩個就可以推出第三個,但前提是我們必須知道中序(這裡是針對二叉樹的,不包括二叉搜尋樹).因為:先序和後序給我們提供的資訊是一樣的--告訴我們誰是根節點,中序則告訴我們左右子樹在哪兒。

例:已知先序為eacbdgf,中序為abcdefg,求後序。

由先序我們知道e為根節點,我們在中序中把左右子樹括起來 --(abcd)e(fg)

同樣對左子樹abcd進行分析,先序為acbd,中序為abcd.--a(bcd)

遞迴下去就可以了

後序為bdcafge

擴充套件:在2023年阿里實習生招聘試題中就有乙個問題:

下面關於二叉搜尋樹的是否正確?

給定一棵二叉搜尋樹的前序和後序遍歷結果,無法確定這棵二叉搜尋樹。

這個說法是錯誤的。

二叉樹(不是搜尋二叉樹),必須是中根加上先根或者後根就能構造出樹,但是,這裡面說了是二叉搜尋樹,已經暗含中根了

根據後序和中序輸出前序

本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。第一行給出正整數n 30 是樹中結點的個數。隨後兩行,每行給出n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。在一行中輸出preorder 以及該樹的先序遍歷結果。數字間有1個空...

根據前序中序求後序

如前序 為 abdecgf 中序 為 bdacgef 先 根據前序第乙個節點 把中序分為bd和cgef兩部分,a為根節點,a左邊為左子樹,右邊為右子樹。再把左右子樹分別做上述步驟。以此類推 根據第二,第三.個節點構成二叉樹 a b e d c f g b 再根據後序的性質得到dbgcbfea 知道後...

前序中序後序

遍歷情況 前序 根結點 左子樹 右子樹 中序 左子樹 根結點 右子樹 後序 左子樹 右子樹 根結點 例題一 輸入描述 input description 輸入檔案共2行,第一行表示該樹的前序遍歷結果,第二行表示該樹的後序遍歷結果。輸入的字符集合為,長度不超過26。輸出描述 output descri...