B树和B+树

本文详细介绍了B树和B+树的数据结构特性,包括节点分支、关键字排列、查找、插入和删除操作。B树适用于平衡查找,其查找过程涉及多层节点扫描;而B+树所有关键字都在叶子节点,便于数据检索,且叶子节点通过链表连接,适合大规模数据存储。文章还探讨了这两种数据结构在删除操作时的不同策略,以及B+树的优化特点。
摘要由CSDN通过智能技术生成

B树

在这里插入图片描述
上图是一颗完整的5阶B树,符合以下特点:

  1. 对于一个m阶B树,每个节点最多有m个分支;根节点且不是叶子节点则至少有2个分支,而非根非叶节点至少有m/2(上取整)个分支。
  2. 有n(k <= n <= m)个分支的节点有n-1个关键字,它们按递增排列,k = 2(根节点)或m/2(上取整)
  3. 节点内各关键字互不相等
  4. 叶节点处于同一层,可以用空指针表示,是查找失败到达的位置
  5. 每个节点存储m-1个key和m个指针,指针Pi所指向的节点关键字小于Keyi+1大于Keyi

B树的查找

从根节点开始从左往右扫描节点中的关键字(二分查找),如果找不到就沿着适当分支到下一层查找,如果遇到了空指针则查找失败。

B树的插入

节点拆分:当前节点关键字个数等于阶数m时,需要将m/2(上取整)位置上的数提出来并为上一层节点的关键字中,此时如果上一层节点关键字个数也等于阶数m,则也进行拆分操作。

B树的删除

  1. 如果要删除的关键字位于叶节点且删除后,该节点关键字个数至少是m/2(上取整)- 1个,则直接删除。
  2. 如果要删除的关键字位于非叶节点上,则使用该节点左子树中最大的关键字或右子树中最小的关键字来替换要删除的关键字。
  3. 如果要删除的关键字所在节点达到了关键字个数的下限,则向他的兄弟节点借一个关键字,即将要删除关键字所在节点对应的上层节点中的关键字移到下层,并将要删除的关键字所在节点的兄弟节点最左或最右的关键字移到上层节点,例如删除下列B树的关键字15,先将17移下来再将18移上去即可。在这里插入图片描述
  4. 如果要删除的节点关键字个数达到了下限并且它的兄弟节点关键字个数也达到了下限,即不能向兄弟节点借关键字了,则直接删除关键字,进行节点合并,并与具有较少关键字的兄弟节点进行合并(将该兄弟节点对应的上层关键字拉下来再进行合并),如果合并后,父节点关键字个数不满足下限则对上层节点也进行关键字的合并操作。例如删除下列B树中关键字5:
    在这里插入图片描述
    删除后B树可能有两种情况:
    在这里插入图片描述
    第一种是选择与右兄弟合并生成的,第二种是选择与左兄弟合并生成的。

B+树

在这里插入图片描述
B+树具有以下特点:

  1. 具有n个关键字的节点具有 n个分支,而B树具有n+1个分支
  2. m阶B+树,每个节点除根节点外,关键字个数m/2(上取整)<= n <= m,根节点关键字个数2 <= n <= m
  3. B+树中叶子节点包含信息,并且包含了全部关键字,叶子节点引出的指针指向记录
  4. B+树中非叶节点仅起到索引作用,不含有该关键字对应记录的存储地址
  5. B+树中有一个指针指向关键字最小的叶子节点,所有叶子节点连接成一个线性链表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值