• B树与B+树


    B树

    image.png
    B树,又称多路平衡查找树,B树中所有结点的孩子个数的最大值称为B树的阶,通常用m表示。一颗m阶B树或为空树,或为满足如下特征的m叉树。

    1. 树中每个结点至多有m棵子树,即至多含有m-1个关键字
    2. 若根结点不是终端结点,则至少有两颗子树
    3. 除根结点外的所有非叶结点至少有[m/2]棵子树,即至少含有[m/2]-1个关键字
    4. 所有的叶结点都出现同一层次上,并且不带信息(可以视为外部结点或类似于折半查找判定树的查找失败结点,实际上这些结点不存在,指向这些结点的指针为空)
    5. 所有非叶结点的结构如下:

    image.png
    image.png

    B树的高度

    image.png
    image.png
    image.png
    image.png

    B树的插入

    image.png
    image.png
    image.png
    image.png
    新元素一定是插入到最底层“终端节点”,用‘查找’来确定插入位置
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    B树的删除

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    B+树

    image.png
    image.png
    一颗m阶的B+树需满足下列条件:

    1. 每个分支结点最多有m课子树(孩子结点)
    2. 非叶根结点至少有两棵子树,其他每个分支结点至少有[m/2]课子树
    3. 结点的子树个数与关键字个数相等
    4. 所有叶结点包含全部关键字及指向相应记录的指针,叶结点中将关键字按大小顺序排序,并且相邻叶结点按大小顺序互相链接起来
    5. 所有分支结点中仅包含它的各个子结点中关键字的最大值及指向其子结点的指针

    image.png

    B+树的查找

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    顺序查找
    image.png
    image.png

    B+树 VS B树

    image.png
    m阶B+树:

    1. 结点中的n个关键字对应n棵子树
    2. image.png
    3. 在B+树中,叶结点包含全部关键字,非叶结点中出现过的关键字也会出现在叶结点中
    4. 在B+树中,叶结点包含信息,所有非叶结点仅起索引作用,非叶结点中的每个索引项只含有对应子树的最大关键字和指向该子树的指针。不含有该关键字对应记录的存储地址

    image.png
    m阶B树:

    1. 结点中的n个关键字对应n+1棵子树
    2. image.png
    3. 在B树中,各结点中包含的关键字是不重复的
    4. B树的结点中都包含了关键字对应的记录的存储地址

    image.png
    image.png

  • 相关阅读:
    Golang string 常用方法
    oak深度相机入门教程-识别眼睛的凝视方向
    VsCode集成Python开发环境
    GJB 5000B二级-CM配置管理
    Kotlin 协程 Select:看我如何多路复用
    .NET性能优化-使用SourceGenerator-Logger记录日志
    彻底解决全局安装权限问题
    flutter系列之:做一个下载按钮的动画
    潘爱民:计算机程序的演进——我的程序人生三十年
    深入浅出:npm常用命令详解与实践
  • 原文地址:https://blog.csdn.net/weixin_42403632/article/details/134377820