1.平衡二叉搜索树(Balanced Binary Search Tree)
1.英文简称:BBST
2.常见的平衡二叉搜索树:
(1)AVL树
Windows NT 内核中广泛使用
(2)红黑树
C++ STL (比如map,set)
Java的TreeMap\TreeSet\HashMap\HashSet
Linux的进程调度
Ngix的timer管理
一般也称他们为:自平衡的二叉搜索树(self-balancing Binary Search Tree)
2. AVL树
平衡因子:某节点的左右子树的高度差
AVL树的特点:
1.每个节点的平衡因子只可能是 1、 0、 -1
2.搜索、添加、删除的时间复杂度是O(logn)
3. AVL树的旋转
-
LL失衡–右旋转(单选)
-
RR失衡–左旋转(单旋)
-
LR失衡–
(1)左边一小部分(p和n)是RR失衡,先左旋转
(2)整体变成了LL失衡,再右旋转
-
RL失衡–
(1)右边一小部分(p和n)是LL失衡,先右旋转
(2)整体变成了RR失衡,再左旋转
-
红黑树
-
B树