一种特殊的树数据类型,以N叉树的形式体现。一般用于构造索引。
src: 吴军《计算之魂》
B 树
- 拆分度 d:定义节点中值的多寡
- 每个节点有 2~2d 个数据,如果数据多于 2d ,节点就应该被拆分
- 节点索引化:当前节点也是一个索引的拆分,例如节点有三个值,那么就会被拆分成四个子树
- 插入、删除规则:如果要修改其中的数据,一旦不满足“拆分度”规则,就需要重构整个树。
B+ 树
对 B 树的两个改进:
- 值仅放在叶节点上
- 使用链表等方式,将叶节点串联
好处:
- 除了叶节点之外,其他父节点仅起到索引作用
- 叶节点上的数据是排好序的,方便大数据处理
例子:使用 B + 树存储字典
B* 树
改进:
- 对父节点的索引节点加入横向指针,更有利于读取大量信息
- 优化分裂机制,使浪费的空间更少