B树及B+树比较

B树

B树中一个结点允许多余两个key的存在。
B树是一种树状数据结构,他能够存储数据,对其进行排序并允许以O(logn)的时间复杂度进行查找,顺序读取,插入和删除等操作。
B树中允许一个结点包含多个key可以使3个,4个,5个甚至更多,并不确定,需要看具体的实现。现在我们选择一个参数M,来构造一个B树,我们可以把他看做是M阶的B树,那么该树会具有如下特点:

  • 每个结点最多M-1个key,并且以升序排序。
  • 每个结点最多能有M个子结点。
  • 根结点至少有两个子结点。

实际应用中B树的阶数一般都比较大(通常大于100),所以,即使存储大量的数据,B树的高度仍然比较小,在某些应用场景下可体现出它的优势。

B+树

B+树是对B树的一种变形树,它与B树的差异在于:

  1. 非叶结点仅具有索引作用,也就是说,非叶子节点只存储key,不存储value。
  2. 树的叶结点构成一个有序链表,可以按照key排序的次序遍历全部数据。

B树的优点

由于B树的每一个结点都包含key和value,因此我们根据key查找value时,只需要找到key所在的位置,就能够找到value,但B+树只有叶子结点存储数据,索引每一次查找,都必须一次一次,一直找到树的最大深度处,也就是找到叶子结点的深度,才能找到value。

B+树的优点

  1. 由于B+树在非叶子结点上不包含真正的数据,只当做索引使用,因此在内存相同的情况下,能够存放更多的key。
  2. B+树的叶子结点都是相连的,因此对整棵树的遍历只需要一次线性遍历叶子结点即可。而且由于数据顺序排序并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值