Algorithm 关于AVL旋转
我正在阅读Mark Allen Wesis关于数据结构和算法中的AVL树的文章 假设要重新平衡的节点是X 可能需要修复(两个是其他两个的镜像):一个 插入X的左子树的左子树,插入 X的左子树的右子树,在左边插入 X的右子树的子树,或右子树中的插入 X的右子女 通过树木的旋转来恢复平衡 以下是我对上述文本片段的问题Algorithm 关于AVL旋转,algorithm,avl-tree,Algorithm,Avl Tree,我正在阅读Mark Allen Wesis关于数据结构和算法中的AVL树的文章 假设要重新平衡的节点是X 可能需要修复(两个是其他两个的镜像):一个 插入X的左子树的左子树,插入 X的左子树的右子树,在左边插入 X的右子树的子树,或右子树中的插入 X的右子女 通过树木的旋转来恢复平衡 以下是我对上述文本片段的问题 作者所说的其他两个人的镜像是什么意思 单旋转和双旋转的对称情况是什么 谢谢假设插入的节点是I。书上说有4个案例。让我们以我是X的左子的左子为例: X / \ ?
谢谢假设插入的节点是I。书上说有4个案例。让我们以我是X的左子的左子为例:
X
/ \
? ?
/ \ / \
I ? ? ?
X
/ \
? ?
/ \ / \
? ? ? I
这个“镜子”是当我是X的正确孩子的正确孩子时:
X
/ \
? ?
/ \ / \
I ? ? ?
X
/ \
? ?
/ \ / \
? ? ? I
这是一个“镜像”的原因是,两种情况下你必须做的旋转是相同的,只是左右颠倒。这同样适用于另外两种情况,其中I是X的右子的左子,I是X的左子的右子
至于你的第二个问题,想法是一样的。在对称情况下(即镜像情况),你做同样的旋转,只是左右颠倒