平衡二叉树
平衡二叉树(AVL树)解决了二叉排序树深度不确定的问题。
问题背景
对于形如左偏树的二叉排序树,查找会退化到顺序查找。平衡二叉树通过保持树的平衡性来解决这个问题。
定义
平衡二叉树是一棵二叉排序树,其左右子树都是 AVL 树,且左子树与右子树的高度差绝对值不超过 1。对于每个结点,左右子树的高度差都不超过 1,查找等操作均可做到 O(log n)。
平衡化处理
在插入过程中,由于平衡化处理,有可能会抵消掉高度增加。在删除操作中,也会进行多次平衡化处理。
旋转类型(相对于度 2 结点):
- LL:插入到度 2 结点的左子树的左子树
- RR:插入到度 2 结点的右子树的右子树
- LR:插入到度 2 结点的左子树的右子树
- RL:插入到度 2 结点的右子树的左子树
大部分操作与二叉排序树相同,但会多一个平衡化处理操作(插入或删除后检测是否平衡并做对应处理)。
