搜索树:AVL Tree, 红黑树, B-Tree
- 二叉搜索树 - 数据有序
- 平衡二叉树 - 高度差 = 0
- AVL Tree - 高度差 <= 1
- 红黑树 - 高度差 < 最小高度 x 2
- m 叉搜索树 - 多个分叉
- B-树 - 内部节点至少 m/2 个子节点
- B+ 树 - 叶子节点连成链表
不平衡的二叉树
不平衡的二叉树深度增加,搜索效率降低。
通过树的旋转可以调整左右平衡。
Tree Rotation
------------------------------------------------------
Rotate Right | Rotate Left
R P | R P
/ \ / \ | / \ / \
P C => A R | A P => R C
/ \ / \ | / \ / \
A B B C | B C A B
------------------------------------------------------
旋转像跷跷板一样,一边的高度升起的同时,另一边的高度下降。
AVL Tree
--------------------------------------------
Case-A => Result
P R
/ \ / \
L R P B
/ \ / \ \
A B L A X
\
X
--------------------------------------------
Case-B => Failure
P R
/ \ / \
L R P B
/ \ / \
A B L A
/ /
X X
--------------------------------------------
Case-B => Case-A => Result
P P A
/ \ / \ / \
L R L A P R
/ \ / \ / \ \
A B X R L X B
/ \
X B
--------------------------------------------