簡體   English   中英

恆定時間內二叉搜索樹的高度

[英]Height of binary search tree in constant time

我需要用O(1)的時間來細化二叉搜索樹的高度,我能想到的唯一方法是在增加全局計數器的add和remove方法中進行檢查,還有其他方法嗎?

O(1)時間建議您在請求高度時已經具有高度。

最好的方法是每當添加/刪除新節點時都保持/更新正確的值。 您的操作方式正確,但是會增加添加和刪除操作的復雜性。

您可以通過多種方式執行此操作,例如將深度值以及節點保留在樹中等。

class Node{
int depth;
Object value;
}

Node lowestNode;

我可以考慮將最大深度節點引用存儲在對象中,並將其保留為depth。 因此,無論何時添加新元素,都可以根據其父元素檢查元素的深度,如果新元素的深度更大,則可以替換最大深度節點。

如果要刪除最大深度節點,則將其替換為父節點,否則沿樹遞歸校正所有元素的深度。

樹的高度為, lowestNode.depth

存儲高度的屬性並在執行添加/刪除操作時更新它應該是最合理的解決方案。

如果保證樹是平衡的(例如AVL),則可以通過樹中元素的數量來計算高度(您必須通過:P保留元素的數量)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM