根據前中後序組合還原二叉樹

2021-10-12 07:45:58 字數 1156 閱讀 4469

今天做題,遇到還原二叉樹的資料結構題目

給定中序遍歷

a b c d e f g

後序遍歷

b d c a f g e

思路:因為後序:左右根

所以根結點為e

根據中序:a b c def g

得到根e的左子樹有a b c d

右子樹有f g

樹的輪廓大概是

e

abcd fg

繼續分析

子樹abcd

根據後序 :b d c a

根為a根據中序:a b c d

根a無左子,有右子樹bcd

a

bcd

繼續分析

樹bcd

根據後序:b d c

根為c根據中序:b c d

根c的左子為b,右子為b

所以

c

b d

綜上:左子樹abcd

a

cb d

樹fg

根據後序:f g

g是根根據中序:f g

f是g的左子樹

g

f

e

a g

c f

b d

關於還原二叉樹

要明確尋找一顆子樹的根可以去尋找後序

通過根去分離左右子樹通過中序

遞迴這個過程即可

先序+中序,可以,先序和後序都可以找子樹的根,不過乙個在前面乙個在後面

先序+後序,不可以,無法分離左右子樹

中序+後序,已經驗證,可以

還挺難寫的,這篇,不是無腦貼上,寫了四十多分鐘,不過寫完對這個過程也更清楚了,

當你能把想到的東西表達出來,才是真的明白吧

2020 12.17

根據前中後序序列建立二叉樹

include include include include include define elemtype char typedef struct bintreenode bintreenode typedef bintreenode bintree bintree bintreecreate ...

根據前序 中序 後序遍歷還原二叉樹

參考 首先我們得知道概念 前序遍歷 先訪問當前節點,再訪問當前節點的左子樹,最後訪問當前節點的右子樹。對於二叉樹,深度遍歷與此同。規律 根在前 子樹在根後且左子樹比右子樹靠前,且第乙個就是根節點 中序遍歷 先訪問當前節點的左子樹,然後訪問當前節點,最後是當前節點的右子樹,二叉樹,中序遍歷會得到資料公...

根據二叉樹的後序遍歷以及中序遍歷還原二叉樹

題目 假設一棵二叉樹的後序遍歷序列為 dgjhebifca 中序遍歷序列為 dbgehjacif 則其前序 遍歷序列為 a.abcdefghij b.abdeghjcfi c.abdeghjfic d.abdegjhcfi 由題,後序遍歷的最後乙個值為a,說明本二叉樹以節點a為根節點 當然,答案中第...