AVL rotate
好久没写博客了。
今天别人问我AVL树,我想到这个就头晕,但是还是复习了一遍,分为双旋和单旋
旋转:
平衡二叉树失去平衡性具有以下四种情况:
左子树的高度大于右子树高度,且相差大于1,同时左子树根节点的左孩子节点高度大于右孩子节点高度。此情况称为左左情况。LL,需要进行右旋
左子树的高度大于右子树高度,且相差大于1,同时左子树根节点的右孩子节点高度大于左孩子节点高度。此情况称为左右情况。RR,需要进行左旋
右子树的高度大于左子树高度,且相差大于1,同时右子树根节点的左孩子节点高度大于右孩子节点高度。此情况称为右左情况。RL,右旋再左旋
右子树的高度大于左子树高度,且相差大于1,同时右子树根节点的右孩子节点高度大于左孩子节点高度。此情况称为右右情况。LR,左旋再右旋
分情况调整,具体如下
http://blog.csdn.net/chenhanzhun/article/details/38615717
但是有一点要切记,就是从失去平衡的最低节点开始调整,千万不要都看到根失衡了就从根开始调整,从插入的节点开始回溯到根,
第一次失衡的作为调整的根。
我已开始以为都是根,结果出现了双选一次就平衡了,