1、平衡二叉树(AVL树)
性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树;
AVL树如图:
LL:LeftLeft,也称“左左”。插入或删除一个节点后,根节点的左孩子(Left Child)的左孩子(Left Child)还有非空节点,导致根节点的左子树高度比右子树高度高2,AVL树失去平衡。
RR:RightRight,也称“右右”。插入或删除一个节点后,根节点的右孩子(Right Child)的右孩子(Right Child)还有非空节点,导致根节点的右子树高度比左子树高度高2,AVL树失去平衡。
LR:LeftRight,也称“左右”。插入或删除一个节点后,根节点的左孩子(Left Child)的右孩子(Right Child)还有非空节点,导致根节点的左子树高度比右子树高度高2,AVL树失去平衡。
RL:RightLeft,也称“右左”。插入或删除一个节点后,根节点的右孩子(Right Child)的左孩子(Left Child)还有非空节点,导致根节点的右子树高度比左子树高度高2,AVL树失去平衡。
四种失去平衡的情况下对应的旋转方法:
LL旋转步骤:
1)、旧根节点的左孩子为新根节点,
2)、旧根节点变为新根节点的右孩子,
3)、旧根节点的左孩子的右孩子为旧根节点的左孩子
1)、旧根节点的右孩子为新根节点,
2)、旧根节点变为新根节点的左孩子,
3)、旧根节点的右孩子的左孩子为旧根节点的右孩子 LR旋转:
1)、根节点的左孩子进行RR旋转,
2)、根节点进行LL旋转, RL旋转:
1)、根节点的右孩子进行LL旋转,
2)、根节点进行RR旋转,