首頁 > Java > java教程 > 主體

AVLTree 類

WBOY
發布: 2024-07-25 07:04:43
原創
196 人瀏覽過

The AVLTree Class

AVLTree類擴展了BST類來重寫insertdelete方法以在必要時重新平衡樹。下面的程式碼給出了 AVLTree 類別的完整原始碼。

雷雷

AVLTree 類別擴充了BST。與BST 類別一樣,AVLTree 類別有一個無參數建構函數,用於建構一個空的AVLTree(第5 行),以及一個從元素數組創建初始AVLTree 的構造函數(第8- 10 行) .

BST類別中定義的createNewNode()方法建立一個TreeNode。重寫此方法以傳回 AVLTreeNode(第 13-15 行)。

AVLTree中的insert方法在第18-27行被覆蓋。此方法首先呼叫BST中的insert方法,然後呼叫balancePath(e)(第23行)來確保樹是平衡的。

balancePath

方法首先取得從包含元素e的節點到根節點的路徑上的節點(第45行)。對於路徑中的每個節點,更新其高度(第 48 行),檢查其平衡係數(第 51 行),並在必要時執行適當的旋轉(第 51-67 行)。 第 82-178 行定義了四種執行旋轉的方法。每個方法都使用兩個

TreeNode

參數(AparentOfA)進行調用,以在節點 A 處執行適當的旋轉。貼文中的附圖說明如何執行每次旋轉。旋轉後,節點ABC的高度更新(第98、125、148、175行)。

AVLTree

中的delete方法在第183-248行被覆蓋。此方法與BST類別中實作的方法相同,只是在兩種情況下需要在刪除後重新平衡節點(第218、243行)。

以上是AVLTree 類的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!