透過執行適當的旋轉操作,不平衡的樹變得平衡。重新平衡樹部分說明如何在節點上執行旋轉。下面的程式碼給出了 LL 旋轉的演算法,如下圖所示。
1balanceLL(TreeNode A, TreeNode ParentOfA) {
2 設 B 為 A 的左孩子。
3
4 if (A 是根)
5 設B為新根
6 其他 {
7 if (A 是parentOfA 的左孩子)
8 設B為parentOfA的左孩子;
9 其他
10 設B是parentOfA的右孩子;
11 }
12
13 將 B.right 賦值給 A.left,使 T2 成為 A 的左子樹;
14 將 A 賦值給 B,使 A 成為 B 的右孩子。 right;
15 更新節點A和節點B的高度;
16 } // 方法結束
注意,節點A和B的高度可以改變,但樹中其他節點的高度不會改變。您可以以類似的方式實現 RR、LR 和 RL 旋轉。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3