[数据结构] B树和B+树概念、性质对比

[数据结构] B树和B+树性质对比:

参考:《王道考研-408教材》


在这里插入图片描述

通用概念:

:所有结点的孩子个数的最大值称为阶。通常用m表示

终端结点:最后一排具有关键字的结点。

叶子结点:也叫失败结点,没有任何信息的一排结点。


B树(B-树)

概念:

​ 也叫作多路平衡查找树、B-树。

​ 注:2-3树、2-3-4树是B树的一种特定情况。而B+树则是B树的变形。

性质(条件)//注意分清子树和结点

B树是一种平衡的多分树,通常我们说m阶的B树,它必须满足如下条件:

  • 每个结点最多有m棵子树。
  • 具有k个子树的非叶结点包含k -1个键。
  • 每个非叶子结点(除了根)具有至少⌈ m/2⌉子树,即最少有⌈ m/2⌉-1个关键字
  • 如果根不是终端结点,则根结点至少有一个关键字,即至少有2棵子树。【根的关键字取值范围是[1,m-1],子树的取值范围是[2,m]】
  • 所有叶子结点都出现在同一水平,没有任何信息(高度一致)。【带有关键字那个叫做终端结点】

关键字:最少⌈ m/2⌉-1,最多m-1

子树:最少⌈ m/2⌉,最多m

在这里插入图片描述

其他性质:

最小高度: h ≤ l o g m ( n + 1 ) h≤log_m{(n+1)} hlogm(n+1)

​ 因为一棵m阶B树最多有m棵子树,m-1个关键字,给定n个关键字,要让高度h最小,那么就让每一层所蕴含的关键字达到最多即可。则有:
n ≤ ( m − 1 ) ∗ ( 1 + m + m 2 + . . . + m h − 1 ) = m h − 1 n≤(m-1)*(1+m+m^2+...+m^{h-1})=m^h-1 n(m1)(1+m+m2+...+mh1)=mh1
​ 化简就可以得到: h ≤ l o g m ( n + 1 ) h≤log_m{(n+1)} hlogm(n+1)

最大高度: h ≤ 1 + l o g ⌈ m / 2 ⌉ [ ( n + 1 ) / 2 ] h≤1+log_{⌈m/2⌉}{[(n+1)/2]} h1+logm/2[(n+1)/2]

​ 相反于最小高度,要达到最大高度,那就让每一层都含有最少的关键字(⌈m/2⌉-1)就好了。

​ 由于:每个非叶子结点(除了根)具有至少**⌈ m/2⌉子树**

​ 第一层(根):1个结点

​ 第二层:2个子树

​ 第三层:2*⌈m/2⌉个子树

​ …

​ 第h+1层(叶子结点): 2 ∗ ( ⌈ m / 2 ⌉ ) h − 1 2*(⌈m/2⌉)^{h-1} 2(m/2)h1

​ 由于叶子结点对应的就是查找失败的情况,而n个结点对应查找失败的情况就是n+1种,所以有:
n + 1 ≥ 2 ∗ ( ⌈ m / 2 ⌉ ) h − 1 n+1≥2*(⌈m/2⌉)^{h-1} n+12(m/2)h1
​ 化简得: h ≤ 1 + l o g ⌈ m / 2 ⌉ [ ( n + 1 ) / 2 ] h≤1+log_{⌈m/2⌉}{[(n+1)/2]} h1+logm/2[(n+1)/2]

​ PS:这个公式好难记啊,记住怎么推到的,直接模拟计算也是可以的


B+树

概念:

​ B+树是应数据库所需要而出现的一种B树的变形树。

性质(条件)//注意分清子树和结点

一棵m阶B+树,它必须满足如下条件:

  • 每个结点最多有m棵子树。
  • 如果根不是终端结点,则根结点至少有一个关键字,即至少有2棵子树。【根的关键字取值范围是[1,m-1]】
  • 每个关键字对应一棵子树(与B树的不同),具有k个子树的非叶结点包含k 个键。
  • 每个非叶子结点(除了根)具有至少**⌈ m/2⌉子树**,即最少有**⌈m/2⌉个关键字**。
  • 终端结点包含全部关键字及相应记录的指针,叶结点中将关键字按大小顺序排序,并且相邻叶结点按大小顺序相互链接起来。
  • 所有分支结点(可以视为索引的索引)中金包含他的各个子节点(即下一级的索引块)中关键字最大值,及指向其子结点的指针。

在这里插入图片描述


m阶B树和B+树的主要对比:

B树B+树
关键字最少:⌈m/2⌉-1
最多:m-1
最少:⌈m/2⌉
最多:m
子树非叶根:至少2棵,最多m棵
其他:至少⌈m/2⌉,最多m
非叶根:至少2棵,最多m棵
其他:至少⌈m/2⌉,最多m
key-childk个key有k+1棵treek个key对应k棵tree
非终端节点包含有用信息只是索引
终端节点不会出现非终端节点的key会出现非终端节点的key
  • 在B+树中,叶结点包含信息,所有非叶结点仅起索引作用,非叶子结点中的每个索引项只是包含了对应子树最大关键字和指向该孩子树的指针,不含有该关键字对应记录的存储地址。
  • 在B+树中,终端结点包含全部关键字及相应记录的指针,即非终端结点出现过的关键字也会在这重复出现一次。而B树是不重复的。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值