数据结构与算法分析-AVL树深入探讨
Table of Contents
1 数据结构之-AVL树深入探讨
之前学习数据结构与算法分析C语言描述的时候, 学到了AVL树, 陷入了重重的陷阱, 如今把一一踩过的陷阱都描述出来, 好让自己温故知新.
1.1 AVL树介绍
- AVL(Adelson-Velskii和Landis)树是带有平衡条件的二叉查找树.这个平衡条件必须要容易保持.而且它须保证树的深度是 \(O(\log{N})\).
- 一棵AVL树是其任意节点的左子树和右子树的高度绝对值最多差1的二叉查找树.
- 下图是AVL树和非AVL树
1.2 AVL树的四种不平衡情形
- AVL树的任意节点
a
的两棵子树(左儿子和右儿子)的高度差2就会出现不平衡状态. - 不平衡情形分为四种
- 对
a
的左儿子(L)的左子树(L)进行一次插入.LL情形
- 对
a
的左儿子(L)的右子树(R)进行一次插入.LR情形
- 对
a
的右儿子(R)的左子树(L)进行一次插入.RL情形
- 对
a
的右儿子(R)的右边子树(R)进行一次插入.RR情形
- 对