码农知识堂 - 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

  • 相关阅读:
    GitHub上线重量级分布式架构原理设计笔记,开源的东西看着就是爽
    数据结构:3.3.4遍历应用例子
    DigiCert证书——银行官网的首选
    深度学习--全连接层、高阶应用、GPU加速
    手把手教你搭建 Ceph+JuiceFS
    HK WEB3 MONTH & Polkadot Hong Kong 火热报名中!
    Python基于词袋模型特征和TFIDF特征进行支持向量机模型中文邮件分类项目实战
    SpringBoot3新特性
    【FPGA零基础学习之旅#15】串口接收模块设计与验证(工业环境)
    浅谈GPT在数据库重构项目中的创新应用
  • 原文地址:https://blog.csdn.net/weixin_42403632/article/details/134377820
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号