B树与B+树区别

什么是B树?

B树是一种平衡多路查找树,它的每一个节点最多包含K个孩子,K被称作为B树的阶,K的大小取决于磁盘页的大小。

定义

一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。它或者是空树,或者是满足下列性质的树:

  1. 根结点至少有两个子女;
  2. 每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m
  3. 每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m
  4. 所有的叶子结点都位于同一层。
  5. 每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。

示例图

在这里插入图片描述

卫星数据示例:

在这里插入图片描述

什么是B+树?

B+树是B树基础上为了更充分的利用结点空间,让遍历查询速度更稳定而扩展的结构,它规定只在叶子节点存数据,非叶子结点只存索引,且叶子结点用一个链表连接起来。

定义

一个m阶的B+树具有如下几个特征:

  1. 有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。
  2. 所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
  3. 所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。

示例图

在这里插入图片描述

卫星数据示例:

在这里插入图片描述

区别

  1. B树的所有节点除了包含数据索引外,还都包含实际的卫星数据,而B+树的非叶子节点只进行数据索引,不包含卫星数据,所有的实际数据都在叶子节点保存。
  2. 由于卫星数据存储结构不同,B树的查找效率最快为根节点,最慢为叶子节点,而B+树的每次查找都是在叶子节点,相对稳定。
  3. 由于B+树的非叶子节点只存贮数据索引,不包含卫星数据,那相同大小的磁盘页相较于B树,能更多的存放数叶子节点,从而降低树结构的整体高度,减少查询时的磁盘IO操作。
  4. B+树的范围查询效率更快,B树需要从根节点依次向下遍历,查找到最小值,然后反向倒推遍历整个树结构,需要做局部的中序遍历,可能要跨层访问,直到找到最大值为止,而B+树只需要找到最小值,然后沿着叶子链表索引逐个比较找到最大值即可。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值