一、B树的概念
大多数的查找树都是二分的,如二叉查找树、AVL树、伸展树等,但是有一种查找树不一定是二分的,它就是B树 ——多路平衡查找树。
B树首先是查找树,所以肯定要满足有序性。
B树是分阶的,对于一个M阶的B树有如下规定:
- 根节点若不是叶子节点,则必须有 2~M 个孩子节点
- 除根节点外,每个非叶子节点必须有 M / 2(向上取整)~ M个孩子节点
- 每个叶子节点高度相等
下面展示一个4阶B树,由于非根节点可以有2~4个孩子节点,又称2-3-4树:
上图可以观察到:
- B树的数据实际都是存储在叶子节点内的。
- 每一个前驱节点有M个指针指向孩子节点,也有可能为空(上图中黑色框框)。
- 每一个前驱节点有M -1个key(上图中蓝色数字),分别储存从第二棵子树开始的最小值。
二、3 阶B树 —— 2-3树
下面是一棵2-3树