408数据结构第7章:B树③——高度、关键字数量与结点数公式
·
专门做计算题。
设:
m = B树的阶
k = ⌈m/2⌉
n = 全树关键字总数
h = B树高度(根为第1层)
一、基础公式
m阶B树:
最多子树数 = m
最多关键字数 = m-1
除根外非叶结点:
最少子树数 = k = ⌈m/2⌉
最少关键字数 = k-1
根若不是终端结点:
最少2棵子树
最少1个关键字
二、求最大高度:让树尽量稀
同样n个关键字,想让树尽可能高:
每个结点尽量少放关键字
每个结点尽量少分叉
各层最少结点数:
第1层:1
第2层:2
第3层:2k
第4层:2k²
...
第h层:2k^(h-2)
各层最少关键字数:
第1层:1
第2层:2(k-1)
第3层:2k(k-1)
第4层:2k²(k-1)
...
三、高度h时最少关键字总数
n_min
= 1 + 2(k-1)(1+k+k²+...+k^(h-2))
化简:
n_min = 2k^(h-1)-1
因此:
n ≥ 2k^(h-1)-1
最大高度:
h_max
= floor(log_k((n+1)/2)) + 1
四、求最小高度:让树尽量满
想让树尽可能矮:
每个结点尽量放满
每个结点尽量有m个孩子
高度为h时,最多关键字:
n_max
= (m-1)(1+m+m²+...+m^(h-1))
= m^h-1
因此:
n ≤ m^h-1
最小高度:
h_min = ceil(log_m(n+1))
五、两条高度公式
k = ⌈m/2⌉
最大高度:
floor(log_k((n+1)/2)) + 1
最小高度:
ceil(log_m(n+1))
如果最大高度公式容易忘:
现场按层写最少关键字数
通常更稳。
六、例:5阶B树,高度2,最少关键字
m=5
k=⌈5/2⌉=3
第1层:
1个关键字
第2层:
根最少2个孩子
每个孩子至少k-1=2个关键字
总数:
1 + 2×2 = 5
七、例:3阶B树,高度5,最少关键字
m=3
k=2
各层最少关键字:
1,2,4,8,16
总数:
31
八、n+1关系
若整棵B树共有:
n个关键字
则最底层外部叶子/失败结点数为:
n+1
九、计算题固定流程
第一步:
k = ⌈m/2⌉
第二步:
问最少 → 稀疏模型
问最多 → 满树模型
第三步:
按层算,或套公式
十、考前速记
m阶:
最多m孩子
最多m-1关键字
k=⌈m/2⌉:
非根内部结点至少k孩子
至少k-1关键字
最高:
尽量稀
n_min(h)=2k^(h-1)-1
最矮:
尽量满
n_max(h)=m^h-1
更多推荐
所有评论(0)