平衡二叉树定义:任意节点的子树的高度差都小于等于 1
判断「平衡二叉树」
判断「平衡二叉树」的 2 个条件:
1.是二叉排序树
2.任何一个节点的左子树或者右子树都是平衡二叉树(左右高度差小于等于1)
平衡因子 BF
结点的平衡因子(balancd factor用bf表示) :二叉树中某结点左子树的高度与右子树的高度之差称为该结点的平衡因子.
在算法中,可以通过平衡因子来具体实现平衡二叉树的定义。
从平衡因子的角度可以说,若一棵二叉树中所有结点的平衡因子的绝对值小于或等于1,则该树称为平衡二叉树。
最小不平衡子树
距离插入节点最近的,并且 BF 的绝对值大于 1 的节点为根节点的子树。
旋转纠正只需要纠正最小不平衡子树即可
左旋:旧根节点为新根节点的左子树,新根节点的左子树(如果存在)为旧根节点的右子树右旋:
旧根节点为新根节点的右子树,新根节点的右子树(如果存在)为旧根节点的左子树
LL型:插入左孩子的左子树,右旋
RR型:插入右孩子的右子树,左旋
LR型:插入左孩子的右子树,先左旋,再右旋
RL型:插入有孩子的左子树,先右旋,再左旋
LL 型失衡 --右旋
RR 型失衡 --左旋
LR型失衡 --先左旋,再右旋
RL型失衡 --先右旋再左旋