二叉平衡搜索树(AVL树)
- 平衡因子:某节点的左右子树的高度差
- AVL树特点
- 每个节点的平衡因子只可能是1、0、-1
- 每个节点的左右子树高度不超过1
- 搜索、添加、删除的时间复杂度为O(logn)
一切从简,下面的例子中节点“6”,“7”, “8”,可能包含左右子树
由于添加和删除造成的失衡情况
LL型-(右旋转)
旋转操作:让“8”这个节点成为7的右子节点,如果“7”这个节点本身有右子节点,就让原本“7”这个节点的右子节点成为“8”的左子节点。
RR型-(左旋转)
旋转操作:让“6”这个节点成为“7”的左子节点,如果“7”这个节点本身有左子节点,就让原本“7”这个节点的左子节点成为“6”的左子节点。
RL型-(先LL右旋转,再RR左旋转)双旋
旋转操作:先把节点“7”和节点“8”看成LL型进行右旋转
旋转之后就会变成RR型
再进行RR型左旋转操作
LR型-(先RR左旋转,再LL右旋转)双旋
旋转操作:先把节点“6”和节点“7”看成RR型进行左旋转
旋转之后就会变成LL型
再进行LL型右旋转操作