一种特殊的数据类型,以N叉树的形式体现。一般用于构造索引

src: 吴军《计算之魂》

B 树

  • 拆分度 d:定义节点中值的多寡
    • 每个节点有 2~2d 个数据,如果数据多于 2d ,节点就应该被拆分
  • 节点索引化:当前节点也是一个索引的拆分,例如节点有三个值,那么就会被拆分成四个子树
  • 插入、删除规则:如果要修改其中的数据,一旦不满足“拆分度”规则,就需要重构整个树。

B+ 树

对 B 树的两个改进:

  • 值仅放在叶节点上
  • 使用链表等方式,将叶节点串联

好处:

  • 除了叶节点之外,其他父节点仅起到索引作用
  • 叶节点上的数据是排好序的,方便大数据处理

例子:使用 B + 树存储字典

B* 树

改进:

  • 对父节点的索引节点加入横向指针,更有利于读取大量信息
  • 优化分裂机制,使浪费的空间更少