跳转至

B+ Tree

基本概念

  • 非页节点有\(\lceil n/2\rceil \sim n\)个子节点,叶节点有\(\lceil(n-1)/2\rceil \sim n-1\)个值。
  • 支持操作:增删查改(具体见ADS中B+树的各种操作),复杂度为\(\log{N}\)

Bottom up B+ tree Build

对于一个序列,若要将其构建成B+树,需要经过以下流程

  • 对序列进行排序
  • 对序列进行划分(根据B+树的支持块大小进行划分)比如对于支持n=5的B+树,排序长度为13的序列,则划分为4+4+3+2(最后两块不能是4+1,因为\(1<\lceil (4-1)/2\rceil\))
  • 构建完最底层之后,再从下至上构建
  • 写入磁盘(seek一次,然后顺序写入)

合并B+树

如果要合并两个B+树,流程如下

  • 从磁盘中读取B+树的叶子节点(seek一次,然后顺序读出,因为叶子节点是连续存储的)
  • 合并有序序列
  • 重复Bottom up B+ tree build的操作