前序遍歷: gdafemhz
中序遍歷: adefghmz
後序遍歷: aefdhzmg
現在,假設僅僅知道前序和中序遍歷,如何求後序遍歷呢?比如,已知一棵樹
的前序遍歷是」gdafemhz」,而中序遍歷是」adefghmz」應該如何求後續遍歷?
第一步,root最簡單,前序遍歷的第一節點g就是root。
然是root的左右子樹之外,沒法找到更多資訊了。
第三步,那就觀察中序遍歷adefghmz。其中root節點g左側的adef必然是
root的左子樹,g右側的hmz必然是root的右子樹。
leftchild。在前序遍歷中,大樹的root的leftchild位於root之後,所以左
子樹的根節點為d。
第五步,同樣的道理,root的右子樹節點hmz中的根節點也可以通過前序遍
之後才會遍歷右子樹,並且遍歷的右子樹的第乙個節點就是右子樹的根節點。
節點的個數。
在上一次中序遍歷中,root左側是a、d、e、f,所以有4個節點位於root左側。
6個就是root的右子樹的根節點了,是m。
第六步,觀察發現,上面的過程是遞迴的。先找到當前樹的根節點,然後劃
復上面的過程。最後就可以還原一棵樹了。
第七步,其實,如果僅僅要求寫後續遍歷,甚至不要專門占用空間保
存還原後的樹。只需要稍微改動第六步,就能實現要求。僅需要把第六步
的遞迴的過程改動為如下:
1 確定根,確定左子樹,確定右子樹。
2 在左子樹中遞迴。
3 在右子樹中遞迴。
4 列印當前根。
二叉樹的重構 前序 後序 中序還原二叉樹
只要知道前序 後序 中序就可以還原二叉樹。前序 中序 preorder gdafemhz inorder adefghmz 通過前序我們可以找到根節點為g,之後在中序中我們中序遍歷的特性找到g的左子樹adef和右子樹mhz。之後在通過前序找到左子樹的根節點d,那麼左子樹的左子樹為a,左子樹的右子樹為...
根據前序與中序序列重構二叉樹
根據前序與中序序列重構二叉樹 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。分析 重構二叉樹的條件是已知中序序列以及前序序列和後序序列的其中乙個。該題中,已知前序序列和...
二叉樹知道前序 中序求後序序列
思路 根據前序性質,每一顆子樹的前序第乙個節點永遠是其根節點 後序也有類似性質,所以知道後序中序求前序是乙個道理 根據中序性質,在中序序列中,某節點之前的節點全在其左邊,反之在其右邊。那麼我們在前序序列中找到當前樹根節點時,再在中序序列中找到樹根節點的位置,那麼知道中序序列中,在根節點以前的節點都是...