B树的阶是什么?

描述一颗 B树时需要指定它的阶数,阶数 表示 此树的结点 最多多少个孩子结点(子树),一般用字母 M 表示阶数。

M 阶的B树 :以【子树】讨论

  • 上限:每个节点最多有 M 个子树
  • 下限:
    根节点至少2个子树,
    非根节点至少有⌈M /2⌉个子树

所以也称 M 阶B树 为 ( ⌈M /2⌉ , M ) 树 ,即超级节点(除根节点)的子树数的上下限 。
注: 超级节点关键码的个数 = 节点子树数 - 1 。
例:
M = 4 阶,(2, 4)树。 最多含有 3个关键字 和 4个子树
M = 5 阶,(3, 5)树。 最多含有 4个关键字 和 5个子树
M = 6 阶,(3, 6)树。 最多含有 5个关键字 和 6个子树

所以,M阶 可理解为 M树,即内含(M-1)个关键字 和 M 个子树。

3阶B树:
一个节点最多有三个子节点
image.png

4阶B树:
一个节点最多只能有四个子节点
image.png

5阶B树:

一个节点最多只能有五个子节点

image.png

m阶B树的性质(m≥2)

概述

m阶B树的性质(m≥2) ,这个M必须大于等于2,B树必须至少是2阶B树

假设一个节点存储的元素个数为 x

根节点:1 ≤ x ≤ m − 1

如果你是根节点,根节点的元素至少是一个,并且小于m-1 .

假如说是3阶B树, 1 ≤ x ≤ 3 − 1
那么x是根节点是1~2

image.png

非根节点:┌ m/2 ┐ − 1 ≤ x ≤ m − 1

假如说是2阶B树,那么非根节点最多是2 ,为什么要这么限制??因为有分叉,分叉是父亲节点分叉出来的,也就是一个节点的子节点个数等于元素个数加1

image.png

┌ m/2 ┐ 符号的意思

⌈ ⌉ 的意思是向上取整的意思,
⌊ ⌋ 的意思是向下取整

向上取整, 运算称为 Ceiling,用数学符号 ⌈⌉ (上有起止,开口向下)表示,。
向下取整, 运算称为 Floor,用数学符号 ⌊⌋** **(下有起止,开口向上)表示。

具体介绍看
https://blog.csdn.net/aerchi/article/details/53031755

如果有子节点,子节点个数 y = x + 1

一个节点的子节点个数等于这个节点的元素个数+1,如果这个节点存储了三个元素,那么它的子节点必然是4个.

image.png

如果你是根节点 :2 ≤ y ≤ m

你的子节点是 y ,为什么这么计算? 因为你根节点是1 ≤ x ≤ m − 1 ,你的子节点肯定就是左右加1了.

非根节点:┌ m/2 ┐ ≤ y ≤ m

比如 m = 3,2 ≤ y ≤ 3,因此可以称为(2, 3)树、2-3树
比如 m = 4,2 ≤ y ≤ 4,因此可以称为(2, 4)树、2-3-4树
比如 m = 5,3 ≤ y ≤ 5,因此可以称为(3, 5)树
比如 m = 6,3 ≤ y ≤ 6,因此可以称为(3, 6)树
比如 m = 7,4 ≤ y ≤ 7,因此可以称为(4, 7)树

思考题

如果m=2,那么B树是什么样子,

如果m=2,意味着,根节点的子节点个数必须是2个,非根节点的子节点个数是1~2 . 这就是二叉搜索树,不过一般b树不会用到m=2的时候. b树的m一般是比较大的

数据库一般是几阶b树?

一般是200~300阶,如果是数据库的b树,一般一个节点能存储200~300个元素的.