计算机基础--->数据结构(8)【B树、B+树<超详细图文>】

这篇具有很好参考价值的文章主要介绍了计算机基础--->数据结构(8)【B树、B+树<超详细图文>】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

B树(B-Tree)

B树(B-Tree)是一种自平衡的搜索树,又称平衡多路查找树,主要用于系统中大量数据的读和写操作。B树的特点是能保持数据有序,这使得在B树中进行查找、顺序访问、插入和删除等操作都非常高效。

B树中单一节点拥有的最多子结点的数量称为B树的阶,一个m阶B树的主要特点如下:

  1. 所有叶子节点都在同一层
  2. 每个节点中的元素都按照升序排列,每个元素的左子树中的所有关键字都小于它,右子树中所有元素都大于它
  3. 若根节点不是叶子节点,则至少有两颗子树(2<=子树个数<=m)
  4. 除根结点和叶子节点外,节点至少有ceil(m/2)棵子树
  5. 有k个孩子的非叶子节点包含k-1个元素(ceil(m/2)<=k<=m,当m=3时,2<=k<=3)

在B树中,插入和删除操作可能涉及节点的分裂和合并,以保持树的平衡性。当插入数据时,如果节点已满,会触发节点的分裂操作;当删除数据时,如果节点过于空闲,会触发节点的合并操作。

B树的查询操作

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树

上图是一个三阶的B树,如果我们要查找元素5,需要进行如下步骤

  1. 与根节点元素9进行比较,5<9进入左子树
  2. 与左子树元素2和6进行比较,发现2<5<6,进入中间子树
  3. 与中间子树3和5进行比较,找到5

B树的几种插入删除情况

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树

  • 如果插入10,没有打破规则,直接插入

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树

  • 如果插入4,这时候可以看到叶子节点元素过多,超过了m-1,因此需要对节点进行分裂
  • 将ceil(m/2)位置的元素上升到父结点
  • 此时父结点的元素个数同样不满足B树规则,因此继续对父结点进行分裂

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树

  • 删除元素13,没有改变规则

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树

  • 删除元素8,剩余元素不足,相邻的兄弟节点没有多余元素,这时候就需要与相邻兄弟节点进行合并操作
  • 首先移动父结点中的元素【该元素在两个需要合并的两个结点元素之间】下移到其子结点中,然后将这两个结点进行合并成一个结点
  • 删除元素11,剩余元素不足,相邻兄弟节点有多余元素
  • 删除后,父节点(9,12)就少一个子节点。此时可以向兄弟节点“借”一个元素。但6不可以直接放在元素11的位置,需要上升到到父节点中,再把元素6和12之间的元素9移动到元素11的位置

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树

  • 删除2

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树

  • 删除元素6
  • 使用9替代6,删除9之后相邻兄弟没有多余元素,需要从父结点去借一个元素,然后进行合并

B+树

是B树的一种变体,主要用于数据库和文件系统,

B+树的主要特点

  1. 有k个子树的中间节点包含k个元素(B树是k-1),每个元素不保存数据,数据都保存在叶子节点。
  2. 所有的叶子节点包含了全部元素,依照元素的大小升序排列,叶子节点之间用双向指针链接
  3. 所有中间节点的元素都同时存在于子结点,在子结点元素中是最大或最小元素
  4. B+树叶子节点中元素个数为(ceil(m/2)~m),添加第一个节点除外

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树

在上图的B+树中,根节点元素8在子节点(2,5,8)中是最大元素,也是叶子节点(6,8)的最大元素;根节点元素15在子节点(11,15)中是最大元素,在叶子结点(13,15)中也是最大元素。

B+树的好处

方便进行范围查询,比如我要查询3~11区间的元素

  1. 首先自顶向下,查找区间的最小值3所在的叶子结点
  2. 通过链表指针,遍历到相邻叶子节点(6,8)
  3. 继续通过链表指针,遍历到相邻叶子结点(9,11)

插入操作

情况1. 若被插入元素所在的结点,其含有元素数目小于阶数 m,则直接插入

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树


情况2. 若被插入关键字所在的结点,其含有关键字数目等于阶数 m,则需要将该结点分裂为两个结点,一个结点包含 ⌈m/2⌉ 。同时,将⌈m/2⌉的关键字上移至其双亲结点。假设其双亲结点中包含的关键字个数小于 m,则插入操作完成

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树


情况3. 若插入的关键字比当前结点中的最大值还大,破坏了B+树中从根结点到当前结点的所有索引值,此时需要及时修正后,再做其他操作。

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树


情况4. 在第 2 情况中,如果上移操作导致其双亲结点中关键字个数大于 m,则应继续分裂其双亲结点。插入元素20

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树

删除操作

情况1:找到存储有该关键字所在的结点时,由于该结点中关键字个数大于⌈M/2⌉,做删除操作不会破坏 B+树,则可以直接删除。

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树


情况2: 当删除该关键字时,导致当前结点中关键字个数小于 ⌈M/2⌉,若其兄弟结点中含有多余的关键字,可以从兄弟结点中借关键字完成删除操作。

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树


情况3: 情况2中,如果其兄弟结点没有多余的关键字,则需要同其兄弟结点进行合并。

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树


情况4: 当删除某结点中最大的关键字时,就会涉及到更改其双亲结点一直到根结点中所有索引值的更改。

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树


情况5: 当进行合并时,可能会产生因合并使其双亲结点破坏 B+树的结构,需要依照以上规律处理其双亲结点。

计算机基础--->数据结构(8)【B树、B+树<超详细图文>】,计算机基础,# 数据结构,数据结构,b树,B+树文章来源地址https://www.toymoban.com/news/detail-532966.html

到了这里,关于计算机基础--->数据结构(8)【B树、B+树<超详细图文>】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机复试面试基础知识(八股文)(数据库、数据结构、操作系统、计网、机组等)

    数据库绪论 1、简述三层模式、两级映射,分别有什么作用? 模式(逻辑模式):是数据库中全体数据的逻辑结构和特征的描述,是数据库系统模式结构的中间层,即不涉及数据的物理存储细节,也与具体应用程序开发工具语言无关。 外模式(用户模式):是用户能看见和使

    2023年04月09日
    浏览(118)
  • 系统架构设计师---计算机基础知识之数据库系统结构与规范化

    目录 一、基本概念  二、 数据库的结构  三、常用的数据模型         概念数据模型        基本数据模型        面向对象模型 四、数据的规范化      函数依赖       范式   1. 数据库 (DataBase, DB) : 是指长期储存在计算机内的、有组织的、可共享的数据集合。   

    2024年02月12日
    浏览(54)
  • 计算机导论07-算法和数据结构

    算法是 为使用计算机解决问题而制定的运算序列,是解决实际问题的方法及步骤 ;在计算机科学中,算法研究应用计算机程序处理问题的方法及其实现流程,是计算机问题解决方案的完整描述, 它是计算机科学的核心研究对象之一。 算法的概念 一般认为,算法(algorithm)

    2024年01月20日
    浏览(50)
  • 计算机系统结构期末重点——计算机系统结构基础及并行性的开发(计算机系统结构,李学干(第五版))(史上最详细)

    目录 1. 计算机系统的层次结构(书p1) 2. 计算机系统结构、计算机组成和计算机实现 2.1 计算机系统结构的定义 2.2 计算机组成的定义(p3) 2.3 计算机实现的定义 3. 计算机系统设计的主要方法(p15) 3.1 由上往下设计 3.2 由下往上设计 3.3 从中间开始的设计 4.  软件发展对系

    2024年02月10日
    浏览(59)
  • 数据结构与算法:计算机科学的基石

    🎉欢迎来到数据结构学习专栏~数据结构与算法:计算机科学的基石 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:数据结构学习 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 🍹文章作者技术和水平有限,如果文中

    2024年02月11日
    浏览(55)
  • 【2023计算机考研】初试数据结构的院校汇总

    PS:学校具体考研信息在院校信息中输入学校名称搜索可查看 传送门:学校列表 - N诺计算机考研 专硕 北方工业大学 北京工商大学 北京石油化工学院 北京电子科技学院 中国农业大学 中央财经大学 北京物资学院 中央民族大学 天津职业技术师范大学 河北科技大学 石家庄铁道

    2024年02月13日
    浏览(71)
  • 只考一门数据结构!安徽工程大学计算机考研

    安徽工程大学 考研难度(☆) 内容: 23考情概况(拟录取和复试分析) 、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文992字,预计阅读:3分钟 2023考情概况 安徽工程大学计算机相关各专业复试和拟录取分析: 083500软件工程一志愿拟录取12人

    2024年02月10日
    浏览(43)
  • 王道计算机考研 数据结构C语言复现-第六章-队列

     这篇文章收录了王道考研课程中涉及的数据结构的所有代码。此外,本博客可能会添加一些额外的代码(不仅限于王道考研),因为408考试中会频繁考察一些冷门的知识点,所以这篇博客会涵盖所有相关的代码。这也是我数据结构的第一轮复习,希望能与大家共同进步。由

    2024年01月21日
    浏览(43)
  • 计算机保研面试常见问题(408数据结构简答题)

    1. 什么是时间复杂度?O(n)的O代表了什么? 答:时间复杂度是指执行算法所需要的计算工作量,可以用于描述一个程序的规模。O(n)中的O表示的是最坏情况下的时间复杂度。 2. 时间复杂度的量级排序是什么? 答:O(logn) O(n) O(nlogn) O(n^2) O(2^n) O(n!) 3. 顺

    2024年02月13日
    浏览(61)
  • 【23考研】计算机408数据结构代码题强化阶段划重点(王道书)

    视频链接:【23考研】10分钟带你整理408数据结构强化阶段代码题复习重点 本篇只适合考408的同学,请自主命题的同学自觉右上角×掉 因为王道书为了照顾自主命题的同学,所以很多算法也给出了代码实现,实际上对于考408的同学,很多代码是不需要掌握的,毕竟408的代码题没

    2024年02月15日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包