我需要罰款的時間爲O(1)的二叉搜索樹的高度我唯一能想到的方法是在添加和刪除方法中進行檢查增加一個全球計數器是否有其他方法?二進制搜索樹的高度在不變的時間
1
A
回答
2
存儲一個屬性的高度,並在添加/刪除時更新它應該是最合理的解決方案。
如果樹是保證平衡(如AVL),就可以計算出在樹中元素的個數高度(你必須保持元素的數量雖然:P)
3
O(1)時間表明你應該已經在要求的時候擁有高度。
無論何時添加/刪除新節點,最好的方法是保持/更新正確的值。你正在做的是正確的方式,但它增加了添加和刪除的複雜性。
你可以做到這一點的方法數,如保持深度值與樹的節點沿等
class Node{
int depth;
Object value;
}
Node lowestNode;
我能想到的存儲對象的最大深度節點參考,並保持該深度。因此,無論何時添加新元素,都可以根據元素的父元素檢查元素的深度,並在新元素具有更多深度時替換最大深度節點。
如果您要刪除最大深度節點,請將其替換爲父級,否則請沿着樹狀圖遞歸地更正所有元素的深度。
樹的高度是,lowestNode.depth
相關問題
- 1. 二進制搜索樹,高度
- 2. 二進制搜索樹的高度,而不構建它
- 3. 二進制搜索樹內的二進制搜索樹
- 4. 二進制搜索樹中的高度函數
- 5. 時間複雜度,二進制(搜索)樹
- 6. 二進制搜索樹密度?
- 7. 獲取二叉搜索樹的高度
- 8. 二叉搜索樹的高度
- 9. 二叉搜索樹的總高度
- 10. 計算二叉搜索樹的高度
- 11. 二進制搜索樹的寬度優先搜索
- 12. Haskell - 二進制搜索樹
- 13. 二進制搜索樹Instantiaition
- 14. 二進制搜索樹C++
- 15. 二進制搜索樹toString
- 16. 二進制搜索樹C++
- 17. 二進制搜索樹
- 18. 二進制搜索樹C++
- 19. 二進制搜索樹大小爲7和高度爲3
- 20. 二進制搜索樹,搜索方法
- 21. 二進制搜索樹搜索操作
- 22. 二進制搜索樹 - 搜索範圍
- 23. Swift二進制搜索樹搜索
- 24. 在C++中使用Stack進行二進制搜索樹的深度搜索
- 25. 二進制搜索的運行時間
- 26. 線性搜索或二進制搜索或二叉搜索樹
- 27. 如何將二進制搜索樹添加到二進制搜索樹?
- 28. 刪除二進制搜索樹的fcn
- 29. 使用類的二進制搜索樹
- 30. 唯一的二進制搜索樹
你需要多準確?如果它是平衡的,它應該是log n。並且log n可以通過值n中的有效位的數量來近似。 – 2013-03-04 02:12:08