」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 實作刪除方法

實作刪除方法

發佈於2024-07-31
瀏覽:356

從 AVL 樹中刪除元素與從 BST 中刪除元素相同,只是樹可能需要重新平衡。如同從 BST 中刪除元素一節中討論的,要從二元樹中刪除元素,演算法首先找到包含該元素的節點。讓current指向二元樹中包含該元素的節點,parent指向current節點的父節點。 目前節點可以是節點的左子節點或右子節點。
刪除元素時會出現兩種情況。

情況一:目前節點沒有左子節點,如下圖(a)所示。要刪除current節點,只需將parent節點與current節點的右子節點連接即可,如下圖(b)所示。沿著從 parent 節點到 root 節點的路徑的節點高度可能已減少。為了確保樹是平衡的,請呼叫

balancePath(parent.element);

Implementing the delete Method

情況2:目前節點有左子節點。設rightMost指向current節點左子樹中包含最大元素的節點,parentOfRightMost指向rightMost的父節點節點,如下圖( a)所示。 rightMost 節點不能有右子節點,但可以有左子節點。將current節點中的元素值替換為rightMost節點中的元素值,將parentOfRightMost節點與rightMost的左子節點連接起來]節點,刪除rightMost節點,如下圖(b)所示。

Image description

parentOfRightMost 到根的路徑上的節點高度可能已減少。為了確保樹是平衡的,請呼叫

balancePath(parentOfRightMost);

版本聲明 本文轉載於:https://dev.to/paulike/implementing-the-delete-method-44k3?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3