你心里有没有点B树?

1. 概念

        B树,是一种多路平衡搜索树,多用于文件系统、数据库的实现。B树中所有节点拥有的子节点数(指针数)的最大值称为B树的阶,如3阶B树他的子节点个数最大为3个。
        可以通过这个可视化数据结构网站自己对照模拟一遍,会更容易掌握的。选择B Trees,就可以进入到页面创建B树了,选择相应的阶数即可。点这里,进入可视化数据结构网站
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. B树的特点

        B树有以下特点:
            1. 每个节点可以存储多个元素(n)、可以拥有多个子节点(n + 1)
            2. 拥有二叉树的一些性质,元素都是有序的;
            3.极度平衡,每个节点的所有子树的高度一致;
            4.整个树的高度非常矮,存储元素个数也非常多;

3. B树的性质

        m阶B数的性质:
            1.m阶B树满足以下性质;
            2.根节点的元素个数必须1 <= x <= m - 1
            3. 非根节点的元素个数必须为┌ m / 2 ┐ - 1 <= x <= m - 1 (┌ ┐向上取整)
            4.如果一个节点中的元素个数为x,并且有子节点,那么子节点个数为y = x + 1那么作为根节点的子节点个数为2 <= y <= m,作为非根节点的子节点个数为┌ m / 2 ┐ <= y <= m

4. B树的节点搜索操作

        B树的搜索步骤和二叉搜索树类似:
            1.先从节点内从小到大开始搜索元素;
            2. 如果命中,搜索结束;
            3. 如果未命中,在去对应的子节点中搜索元素,重复1,2步骤;

5. B树的节点添加操作

        B树的添加,新添加的元素必定是添加到叶子节点上,如果叶子节点上的元素个数满足m阶B树的性质,那么就符合条件无需处理。但是如果插入到叶子节点上的个数超过B树的阶数,那么需要进行上溢处理。

        上溢解决(上溢节点的个数必定等于m):
            1.找出产生上溢的那个节点最中间的位置的元素b;
            2.将b位置的元素向上与父节点进行合并;
            3. 然后将[0,b - 1][b + 1,m]位置的元素分裂成两个子节点,作为上溢元素的左右子节点;
            4. 检查父节点是否发生上溢,如果父节点发生上溢,那么执行1,2,3步骤,直到上溢问题解决;
在这里插入图片描述

6. B树的节点删除操作

        B树的删除操作,如果删除的元素在叶子节点,那么直接删除即可。如果删除元素在非叶子节点,那么需要以下步骤:
        1. 先找到他的前驱或后继元素,覆盖所需要删除的元素值;
        2. 在把前驱或后继元素删除;
        由此可知,不管是叶子节点删除,还是非叶子节点删除。真正的删除元素都是发生在叶子节点上。如果在删除叶子节点的时候,节点的元素数量为┌ m / 2 ┐ - 1,那么需要进行下溢操作,下溢节点的元素数量必然等于┌ m / 2 ┐ - 2.

        下溢解决:
        1. 如果下溢节点临近的兄弟节点,有至少┌ m / 2 ┐个元素,可以向其借一个元素a,然后将其父节点的元素b插入到下溢节点的0位置,把元素a替换到父节点元素b的位置 (旋转操作);
在这里插入图片描述

        2. 如果临近的兄弟节点,只有 ┌ m / 2 ┐ - 1个元素,那么将父节点的元素b挪下来跟左右子节点进行合并,并且非常巧妙的是合并的元素个数为┌ m / 2 ┐ + ┌ m / 2 ┐ - 2不会超过m - 1,这个操作可能会导致父节点产生下溢 ,然后尝试执行1,2步操作。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值