AVL树诞生的原因
如果数据是有序的或者接近有序的,搜索二叉树就会产生单支的情况,单支就相当于在顺序表中搜索元素,降低了效率。因此1962年俄罗斯两位数学家发明了AVL树。
AVL树
在二叉搜索树中插入新的结点后,保证每个结点的左右子树的高度之差的绝对值不超过1,就可以降低树的高的,减少平均搜索长度。
性质:
- 左右子树都是AVL树
- 左右子树的高的之差为-1或0或1(平衡因子)
AVL树的插入
- 空树(直接插入)
- 寻找插入位置
- 插入新结点
- 更新平衡因子(旋转调节)
旋转分析
- 较高右子树的右侧—>(左单旋)
- 较高左子树的左侧—>(右单旋)
- 较高右子树的左侧—>(先右后左)
较高左子树的右侧—>(先左后右)