通过执行适当的旋转操作,不平衡的树变得平衡。重新平衡树部分说明了如何在节点上执行旋转。下面的代码给出了 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