簡體   English   中英

二進制搜索樹中的刪除

[英]Deletion in Binary Search Tree

為什么在BST中刪除O(log(n))操作。 正如我所說,它涉及釋放節點並將父引用指向NULL 不應該這個拿O(1)

問題是如何刪除有兩個子節點的節點 - 必須重新構建樹,以便子節點找到合適的新父節點。 詳細說明在這里 谷歌是你的朋友。

如果你從樹的根開始,那就是O(lg n ):那么你必須搜索要刪除的元素,然后搜索它的有序后繼元素。

如果要刪除節點及其所有子節點,則它很簡單,但如果要保持排序順序,則必須重建子節點。

二叉搜索樹中的刪除是O(h),其中h是樹的高度。

既然你沒有提到樹是否平衡,不平衡樹的最壞情況復雜性將是O(n),即當它是退化樹時。

如果bst是平衡的(avl,紅黑等)之一,則最壞情況復雜度將是O(lg n),因為幾乎所有平衡bst的高度是K *(lg n)。

例如,對於avl樹k = 1並且對於紅黑樹K = 2。

暫無
暫無

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

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