實際上我想知道的不是如何實現BST的按順序遍歷算法,而是僅僅使用BST的插入,刪除和預序遍歷算法來實現它。
您可以假設您已經獲得了用於插入,刪除和預序遍歷的標準BST算法的實現。如何實現BST inorder遍歷?
0
A
回答
0
嗯......比方說,我們在根節點有+,在左節點有1,在右節點有2。預訂將是+ 1 2
,順序將是1 + 2
..不同之處在於第1和第2個已交換,所以如果您有插入和刪除,您可以遞歸交換每個根節點值與其左節點值,然後使用pre順序遍歷將返回的樹會導致一個inorder遍歷。
我不確定這是否要走,但我希望它能幫上忙。
+0
Ankur,似乎你在某個地方出了問題。我們可以刪除並插入一個元素,但它不會交換這兩個元素,因爲所有的插入和刪除操作都會發生,以保護二進制搜索屬性。 –
0
我想我找到了解決方案。 :)
我們有預先遍歷,插入和刪除的方法。
假設我們有一個BST。
我們所做的是,我們提供預定義遍歷方法與給定的BST。由於預遍遍歷總是首先到達父節點,因此我們刪除並遞歸地插入每個根(因爲根是第一個父節點)節點,直到根的左子樹爲空。
現在您開始刪除根節點,直到沒有節點爲止。將這些刪除的節點放入數組或任何您想要的位置。你將得到有序的一組節點。 (即節點將按照排序順序刪除。最小的第一個等...)
相關問題
- 1. Inorder在BST中遍歷
- 2. 如何實現非遞歸inOrder遍歷
- 3. 瞭解BST的Inorder遍歷的邏輯
- 4. InOrder樹遍歷
- 5. 如果以這種方式實現BST inorder遍歷的時間複雜度
- 6. Python中的InOrder遍歷
- 7. 迭代Inorder遍歷
- 8. Inorder,Preorder和Postorder遍歷
- 9. C++ BST Inorder Trouble
- 10. BST級別遍歷
- 11. BST遍歷預訂
- 12. 遍歷BST作業
- 13. 預訂和與Inorder遍歷的關係
- 14. 爲了BST遍歷:找到
- 15. 迭代後序遍歷bst?
- 16. BST字符串遍歷
- 17. 二叉樹inorder遍歷顯示錯誤
- 18. Java二叉樹。打印InOrder遍歷
- 19. inOrder遍歷工作,但一直打印
- 20. 我們如何遍歷實現迭代
- 21. 如何實現廣度優先遍歷?
- 22. 使用BST實現堆棧
- 23. 基於inorder遍歷方法的Python生成器如何工作
- 24. BST遍歷BFS中的seg錯誤
- 25. 在遍歷BST時遇到問題
- 26. 等級順序在BST中遍歷
- 27. 將(BST的)迭代級別順序遍歷轉換爲遞歸實現
- 28. 現實世界前/後階遍歷樹遍歷的例子
- 29. 如何使用遞歸工作遍歷BST?
- 30. 如何使用{pre,in,post}命令遍歷結果重建BST
你有沒有搜索過?看看這個[鏈接](http://en.wikipedia.org/wiki/Tree_traversal) – devsaw