平衡二叉搜索树
平衡:左右子树的高度差越小,该树越平衡
平衡因子:某节点的左右子树的高度差
节点的添加和删除是无法限制的,它们都可能会导致二叉搜索树变得不平衡,所以,我们要在节点的添加和删除操作之后,调整二叉树使得其变得尽可能平衡
AVL树
特点:
- 每个节点的左右子树高度差不超过1
- 搜索、添加、删除的时间复杂度是O(logn)
添加导致的失衡
- 实例:添加13
- 最坏可能会导致所有祖先节点都失衡
- 父节点、非祖先节点都不可能失衡
调整失衡的四种方法
LL-右旋转(单旋)
RR-左旋转(单旋)
LR-RR左旋转,LL右旋转(双旋)
RL-LL右旋转,RR左旋转(双旋)
添加之后的修复、旋转、统一所有旋转、删除之后的修复等,过于复杂,搞不定zzz