如何從給定的遍歷方法(inorder,post-order或pre-order)中找到二叉樹?如何從給定的遍歷中找到二叉樹?
0
A
回答
3
1
如果你想使用遍歷結果恢復原始樹,那麼我對你有一些壞消息 - 沒有明確的解決方案。將會有幾棵樹可以產生相同的遍歷結果。
例如,對於序遍歷以下的樹木會產生相同的結果:1, 2, 3
2 3 1
/\ / \
1 3 2 2
/ \
1 3
3
無法通過它只有一個遍歷(中序,預購或後序)做到這一點。
這是可以做到。如果一棵樹的中序&序遍歷給出:
- 序的第一個元素將是樹的根。 (假設它是A)
- Inorder中的Searc root所以所有左邊的節點都是左子樹的Inorder和右子樹的Inorder。計算根節點左側的節點數量L.
- 從第二個節點的後序將是左子樹的前序,之後是右子樹的前序。
因此,我們找到了根元素,並將我們的Inorder排序到左子樹的Inorder,右子樹的Inorder和Pre子到左子樹的預定義以及右子樹的預序中。所以我們可以通過遞歸來做到這一點,直到只剩下一個節點。
同樣,我們可以爲Inorder和Postorder進行操作,其中root將是後單的最後一個元素。
+0
+1 ...絕對是! – 2010-06-20 17:55:51
1
(好吧,既然我們已經決定,amended question應該在這裏,張貼我的答案也一樣)
二叉樹的後序和中序遍歷給出below.Is有可能獲得來自這些遍歷的唯一二叉樹?
這是可能的。
在後序遍歷(左右根)中,整棵樹的根節點總是最後一個(在你的情況下它是A)。在遍歷(左 - 右)中,根之前的節點屬於左子樹,根之後的節點 - 右邊的節點。由於我們已經確定了根,所以我們可以確定左子樹和右子樹中的節點。
確定後,我們可以在後序列表中分開左右子樹。所以,現在我們已經確定了左右子樹和根節點:
postorder: left|right|root
inorder : left|root|right
現在我們只需要遞歸構造左右子樹。鰭。
相關問題
- 1. 建立二叉樹出給定遍歷
- 2. 二叉樹遍歷
- 3. 二叉樹遍歷
- 4. 遍歷二叉樹
- 5. 遍歷二叉樹
- 6. 從給定的預先遍歷構建二叉樹
- 7. 遞歸遍歷二叉查找樹
- 8. 二叉搜索樹給定樹的前,後,後順序遍歷
- 9. 二叉樹級別遍歷
- 10. 二叉樹遍歷抽象
- 11. 二叉搜索樹遍歷
- 12. 遍歷二叉搜索樹
- 13. 爲了遍歷二叉樹
- 14. 二叉搜索樹遍歷
- 15. 遍歷非二叉樹
- 16. 遍歷二叉搜索樹
- 17. Javascript:遍歷二叉樹?
- 18. 二叉樹級別遍歷
- 19. SQL二叉樹遍歷
- 20. 遞歸遍歷二叉樹
- 21. 在樹中遍歷二叉樹C
- 22. PHP二叉搜索樹,如何遍歷
- 23. 只給出一個遍歷時尋找二叉樹的另外兩個遍歷
- 24. 查找僅給予遍歷的二叉樹
- 25. 查找從它的前序遍歷序列中序遍歷二叉樹
- 26. 二叉樹的遍歷C++中
- 27. 遍歷C中的二叉樹C
- 28. 遍歷Python中的二叉樹
- 29. 如何在二叉查找樹中遍歷一個層次?
- 30. 使用給定的遍歷驗證二叉樹
你能提供更多信息嗎?一個例子,也許? – Aziz 2009-09-06 16:03:19
對不起,我們的編輯相撞。我合併你的。 – 2009-09-06 16:04:26
哈哈沒問題:) – Aziz 2009-09-06 16:04:48