二叉搜索树
二叉搜索树(Binary Search Tree)是二叉树的一种,是应用非常广泛的一种二叉树,又被称为二叉查找树、二叉排序树,简称:BST;
二叉搜索树可以大大提高搜索数据的效率;
- 任意一个节点的值都大于其左子树所有节点的值
- 任意一个节点的值都小于其右子树所有节点的值
- 它的左右子树也是一颗二叉搜索树
- 二叉搜索树没有索引的概念
二叉搜索树复杂度
添加顺序或删除情况都可能造成其复杂度的变化:
- 情况1-复杂度为:O(h) == O(logn),复杂度根据高度而定,如下图:

- 情况2-复杂度为:O(h) == O(n),同样以高度决定,但是近似于链表,如下图:
平衡二叉搜索树
平衡二叉搜索树(Balanced Binary Search Tree),简称:BBST
平衡:当节点数量固定时,左右子树的高度越接近,这棵二叉树就越平衡(树高度越低)
理想平衡:最理想的平衡,就是像完全二叉树、满二叉树那样,高度是最小的
经典常见的平衡二叉搜索树,一般也称为自平衡的二叉搜索树(Self-balancing Binary Search Tree):
- AVL树:
- Windows NT 内核中广泛使用
- 红黑树:
- C++ STL (比如:map、set)
- Java的TreeMap、TreeSet、HashMap、HashSet
- Linux的进程调度
- Nginx的timer管理
