已知二叉樹的兩種遍歷求第三種遍歷。
已知前序和中序求後序,已知後序和中序求前序,這兩種解法網上有很多,但是已知前序和後序求中序的解法我沒找到,這裡寫乙個自己的想法,有可能大家已經想到了我沒有搜尋到而已
首先,我們看看前序、中序、後序遍歷的特性:
前序遍歷:
1.訪問根節點
2.前序遍歷左子樹
3.前序遍歷右子樹
中序遍歷:
1.中序遍歷左子樹
2.訪問根節點
3.中序遍歷右子樹
後序遍歷:
1.後序遍歷左子樹
2.後序遍歷右子樹
3.訪問根節點
思路:把後序的遍歷結果做一下顛倒,那麼結果就是
1.訪問根節點
2.後序遍歷右子樹
3.後序遍歷左子樹
根據這個結果和前序結果比較求出結果。
例如:乙個已知二叉樹的前序遍歷為:abdghcef,後序遍歷為:ghdbefca 求中序遍歷的結果.
解法:將後序的遍歷結果顛倒過來就是acfebdhg
我們把前序遍歷的結果命名(1):abdghcef 顛倒過來的命名為(2):acfebdhg
1.很明顯根節點是a,
2.從(1)的結果看a緊跟著的是b開頭的左子樹
3.從(2)的結果看a後面緊跟著的是c開頭的右子樹
那麼屬於左子樹的應該為bdgh 屬於右子樹的應該是cfe
我們又有左子樹的前序遍歷(3):bdgh 顛倒的遍歷(4):bdhg
重複上面的步驟可以繼續拆分為更小的單位。
當然結果有時候不唯一,這是已知條件決定的。
出處:
已知二叉樹前序和中序求後序
設某二叉樹 前序遍歷為 abcdefghi 中序遍歷為 bcaedghfi 求該二叉樹的後序遍歷?因為二叉樹前序遍歷為 abcdefghi,所以這棵樹的根結點為 又因為中序遍歷為 bcaedghfi,所以這棵樹的左子樹為bc,右子樹為edghfi 現在先看左子樹中序遍歷 bc,由前序遍歷abcdef...
二叉樹 前序遍歷 中序遍歷 後序遍歷
前序遍歷 dlr 是二叉樹遍歷的一種,也叫做先跟遍歷,先序遍歷,前序周遊,可記做根左右。前序遍歷首先訪問根節點然後遍歷左子樹,最後遍歷右子樹。前序遍歷首先訪問根節點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根節點,然後遍歷左子樹,最後遍歷右子樹。若二叉樹為空則結束返回,否則 1 ...
二叉樹前序,中序,後序遍歷詳解
只要是搞計算機的,對資料結構中二叉樹遍歷都不陌生,但是如果用到的機會不多那麼就會慢慢淡忘,溫故而之新才是最好的學習方式,現在就重新溫習一下這方面的知識。首先我想先改變這幾個遍歷的名字 前根序遍歷,中根序遍歷,後根序遍歷 前中後本來就是相對於根結點來說的,少乙個字會產生很多不必要的誤解。1.前根序遍歷...