B树,B+树基本内容

232 阅读2分钟

这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

B-树(B树:多路搜索树 不像二叉树 只有两路)

什么条件才能满足时一棵B树呢? 一颗 m 阶的 B-树(也可以知道:这颗B树最多有m个分支) 需要又以下的特点:

  • 每一个结点最多有m个分支
  • 若根结点非叶子结点,则它至少有两个分支 最多肯定时m啦
  • 那中间结点,它至少有p个分支 (⌈m⌉<= p <= m 例如m=3,则2<= p <= 3)
  • 叶子结点都再同一层上,而这些结点都不存在,指向这些结点的指针都为 NULL
  • 非终端结点包含的信息数据可以表示为(n,A0,K1,A1,K2,…,Kn,An) 其中K1,K2...是关键码 且Ki<Ki+1;A1,A2,....是指向孩子的指针,如A0(指向的所有关键码)<K1(指向的所有关键码<A1,A2,...(指向的所有关键码 其中关键码个数n **⌈m/2⌉-1 <= n <= m-1 **

如下图是一颗四阶B-树 深度为4

image.png

我们来熟悉上面的特点:

  • a是根结点 有2个分支
  • 中间结点的分支范围 2<=p<=4 也都符合
  • 如a结点中n=1,关键码35 指向最左边孩子指针 且18<35,指向最右边孩子指针C,其中n=2,43,78都大于35 且43<78所以也符合。

在了解了B-树之后 那就不得不来聊一聊B+树

B+树

一课B+树需要满足如下条件:

  • 每一个结点最多有m个分支
  • 若根结点非叶子结点则至少2棵子树,其他的中间结点至少⌈m/2⌉
  • 结点的孩子个数等于关键字的个数
  • 所有的叶子结点包含全部关键字以及指向相应记录的指针 且在叶结点中关键字是有顺序的

看图:

b7c2c79dd64f3c592a25ebbfbcad6be.png

我们和上面的B树相比,B树的叶子结点是不存任何信息的 并且其叶子结点个数是关键字个数+1,而B+树叶子结点有内容并且包含了所有的关键字,即使出现在非叶结点的关键字也会出现在叶子结点。

今天终于分享了B树与B+树基本的内容 下一次将会继续分享他们的插入和删除!