2013-10-31 81 views
1

我一直在閱讀有關AVL樹的文獻,發現它沒有詳細闡述AVL樹插入/刪除中需要多少次餘額檢查。在AVL樹插入/刪除中需要多少次餘額檢查

例如,在插入一個節點後,我們是否需要檢查從新節點一直到根的平衡?或者我們可以在輪換之後停止嗎?

如何通過複製左側子樹中最右側節點的策略進行刪除?從新刪除的(左子樹中最右邊的節點)節點檢查根?我們可以在輪換之後停止嗎?

回答

1

插入後,您需要更新樹中每個「父」的平衡因子,直到根;所以它是O(log n)更新的最大值。但是你只需要進行一次重組就可以將樹恢復到不變量。

刪除後,像插入,你必須更新樹上的平衡因子;所以再次是O(日誌)更新。但是,與插入不同,您可能會使用多重重構旋轉來將樹恢復爲不變量。

http://en.wikipedia.org/wiki/AVL_tree