【发布时间】:2023-02-23 02:53:27
【问题描述】:
标签: avl-tree
标签: avl-tree
它是一个是的是的情况下,因为节点 ? 的平衡因子不是负数(它为零)。
维基百科关于 AVL rebalancing 的部分列出了这些可能性,但请注意节点的标记不同:
令 X 为具有(临时)平衡因子 −2 或 +2 的节点。它的左子树或右子树被修改了。让 Z 成为更高的孩子 [...]
- 右 右 ⟹ Z 是其父 X 的右孩子并且 BF(Z) ≥ 0
- [...]
- Right Left ⟹ Z 是其父 X 的右孩子并且 BF(Z) < 0
为你的树使用这个标签,你会这样描绘它:
____44____ BF(X): 2 / X 17 __62__ BF(Z): 0 / / Z 10 21 __50_ 78 / / 48 54 72 88 / / / 45 49 52 56 81 92所以我们处于第一种情况(即对对)。
维基百科继续采取行动:
并且重新平衡的执行方式不同:
- 右 右 ⟹ X 通过简单的旋转重新平衡
rotate_Left这个简单的旋转将给出这棵树:
____62____ / Z __44__ 78 / X / 17 __50_ 72 88 / / / 10 21 48 54 81 92 / / 45 49 52 56
【讨论】: