基本概念
B树,又称多路平衡查找树(绝对平衡,无高度差),B树中所有结点的孩子个数的最大值称为B树的阶,通常用表示。一棵m阶B树或为空树,或为满足如下特性的m叉树:

- 根结点的子树数∈[2,m]\in[2,m]∈[2,m];根结点的关键字数∈[1,m−1]\in[1,m-1]∈[1,m−1]。其他结点的子树数∈[⌈m/2⌉,m]\in[\lceil m/2\rceil,m]∈[⌈m/2⌉,m];其他结点的关键字数∈[⌈m/2⌉−1,m−1]\in[\lceil m/2\rceil-1,m-1]∈[⌈m/2⌉−1,m−1]
(包括失败结点也成立) - 对于任一结点,其所有子树高度都相同
- 关键字的值:子树0<关键字1<子树1<关键字2<子树2<…(类比二叉查找树 左<中<右)
- 所有叶子结点均不带信息(为失败结点)
B树的高度问题
含n个关键字的m阶B树,最小、最大高度是多少?(此处n个关键字为总关键字数)

- 最小高度
让所有结点尽可能满
→\rightarrow→ 每个结点的关键字数都为m-1
| - | root | 第2层 | 第3层 | 第h层 |
|---|---|---|---|---|
| 结点数 | 1 | m | m2m^2m2 | mi−1m^{i-1}mi−1 |
则高度为h的m阶B树,最多总关键字数为
(m−1)(1+m+m2+..mh−1)
(m-1)(1+m+m^2+..m^{h-1})
(m−1)(1+m+m2+..mh−1)
n≤(m−1)(1+m+m2+..mh−1)
n\leq(m-1)(1+m+m^2+..m^{h-1})
n≤(m−1)(1+m+m2+..mh−1)
h≥logm(n+1)
h\geq log_m(n+1)
h≥logm(n+1)
- 最大高度
让所有结点仅可能的空,分叉尽可能的少
| - | root | 第2层 | 第3层 | 第h层 |
|---|---|---|---|---|
| 结点数 | 1 | 2 | 2*⌈m/2⌉\lceil m/2 \rceil⌈m/2⌉ | 2*(⌈m/2⌉)h−2(\lceil m/2 \rceil)^{h-2}(⌈m/2⌉)h−2 |
第h+1层(叶子结点)失败结点共有2∗(⌈m/2⌉)h−12*(\lceil m/2 \rceil)^{h-1}2∗(⌈m/2⌉)h−1
又因为n个关键字(总)的B树一定有n+1个叶子结点(理解为[−∞,+∞][-\infty,+\infty][−∞,+∞]被n个关键字切分为n+1个区域)
则
n+1≥2∗(⌈m/2⌉)h−1
n+1\geq2*(\lceil m/2 \rceil)^{h-1}
n+1≥2∗(⌈m/2⌉)h−1
得
h≤log⌈m/2⌉n+12+1
h\leq log_{\lceil m/2\rceil}{n+1\over 2}+1
h≤log⌈m/2⌉2n+1+1
1619

被折叠的 条评论
为什么被折叠?



