码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

  • 相关阅读:
    如何调整 Kubernetes StatefulSet 卷的大小
    前端AST详解,手写babel插件
    CPU性能优化干货总结
    Python类变量和实例变量(类属性和实例属性)
    高效使用python之xlwt库编辑写入excel表内容
    通过Power Platform自定义D365 CE 业务需求 - 10.使用Power Apps和Dynamics 365的集成
    TensorFlow 的基本概念和使用场景
    Python测试框架 Pytest —— mock使用(pytest-mock)
    Qt QDateTime计算时间差
    Java-面向对象之(抽象类+接口)
  • 原文地址:https://blog.csdn.net/weixin_42403632/article/details/134377820
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号