平衡二叉树
廖家龙 用心听,不照做

平衡二叉树:AVL,任意结点的平衡因子的绝对值不超过1(平衡因子:左子树高度-右子树高度)

平衡二叉树的判断:利用递归的后续遍历过程
1)判断左子树是一棵平衡二叉树
2)判断右子树是一棵平衡二叉树
3)判断以该结点为根的二叉树为平衡二叉树【判断条件:若左子树和右子树均为平衡二叉树,且左子树与右子树高度差的绝对值小于等于1,则平衡】

平衡二叉树的插入:

1)LL平衡旋转(右单旋转)
原因:在结点A的左孩子的左子树上插入了新结点
调整方法:右旋操作,将A的左孩子B代替A,将A结点称为B的右子树根结点,而B的原右子树则作为A的左子树

2)RR平衡旋转(左单旋转)
原因:在结点A的右孩子的右子树上插入了新结点
调整方法:左旋操作,将A的右孩子B代替A,将A结点称为B的左子树根结点,而B的原左子树则作为A的右子树

3)LR平衡旋转(先左后右双旋转)
原因:在结点A的左孩子的右子树上插入了新结点
调整方法:先左旋后右旋操作,将A的左孩子B的右孩子结点C代替B,然后再将C结点向上代替A的位置

4)RL平衡旋转(先右后左双旋转)
原因:在结点A的右孩子的左子树上插入了新结点
调整方法:先右旋后左旋操作,将A的右孩子B的左孩子结点C代替B,然后再将C结点向上代替A的位置