回答
假設由「平衡」,你的意思是「高度平衡」的AVL樹感覺,你可以存儲任意信息爲每個節點,
- 對於後序的每個節點,
- 如果其中一個孩子不存在,則假設其各自的身高爲0.
- 如果兩個孩子的身高相差超過一個,那麼樹就不平衡。
- 否則,此節點的高度是兩個孩子身高中較大的一個。
- 如果達到了這一點,樹就是平衡的。
一種方式進行後序遍歷:在根
- 開始
- 環
- 如果此節點的左子存在,沒有它的高度計算,請訪問其左孩子旁邊。
- 否則,如果此節點的右側子節點存在並且沒有計算其高度,請訪問其右側的子節點。
- 其他
- 計算此節點的高度,可能返回早
- 如果此節點是不是根,下次光臨其父。
- 如果達到了這一點,樹就是平衡的。
非常感謝準確的答案。是的,我的意思是身高平衡。我在哪裏可以找到這個函數在C++中的實現? – user2000916
@ user2000916你可以寫一個。關於一些實現細節 - 您可以將深度存儲爲兩個變量(訪問/未訪問,深度)或一個(如果訪問深度,則爲0,如果未訪問) –
基本上我需要此實現的迭代版本:http://www.geeksforgeeks .org/how-to-determine-if-a-binary-tree-is-balanced/ – user2000916
- 1. 檢查二叉樹是否平衡
- 2. 檢查二叉樹是否平衡
- 3. 檢查二叉樹是否爲二叉搜索樹的函數?
- 4. 平衡二叉樹
- 5. 平衡二叉樹的索引函數
- 6. 二叉樹屬性 - 平衡
- 7. 平衡二叉搜索樹
- 8. 左平衡二叉樹
- 9. 無法平衡二叉樹
- 10. 生成平衡二叉樹
- 11. 不平衡二叉樹
- 12. 二叉樹中的平衡和數
- 13. 平衡二叉搜索樹子樹
- 14. 直觀的方式來了解樹遞歸 - 編寫代碼,以檢查是否二叉樹是平衡
- 15. 疑問關於函數檢查樹是否平衡?
- 16. 完整二叉樹和平衡二叉樹的區別
- 17. 使用遞歸進行二叉樹平衡檢查?
- 18. .NET Generic.Dictionary的實現是否使用平衡二叉樹?
- 19. 平衡四叉樹
- 20. 這個二叉樹可以平衡嗎?
- 21. 完美平衡二叉搜索樹
- 22. 打印不平衡的二叉樹
- 23. 使用foldr構建平衡二叉樹
- 24. 如何平衡我的二叉樹
- 25. 二叉搜索樹(前平衡)
- 26. 函數重新平衡二叉搜索樹
- 27. 展平二叉查找樹
- 28. 檢查一棵樹是否是二叉搜索樹
- 29. 迭代解決方案尋找樹是否平衡
- 30. haskell檢查平衡樹
你試過了什麼?你在尋找什麼樣的平衡點?它需要多高效? –
你的問題真的不能給任何人足夠的信息給你一個答案。你有什麼嘗試?你在用什麼語言?這不會是一個家庭作業的問題,是嗎?... – Floris
@弗洛伊斯每當語言沒有給出,我假設'語言不可知'算法' –