18-数据结构-查找-B树和B+树

2023-10-27

        简介:B树和B+树,都是当存储数据较大时,从硬盘读取数据的优化。emm,我这么说有点迷糊。还是从应试考试的角度解释吧,B树和B+树,都是在二叉排序树的基础上,优化的,跟二叉排序树很像,但B树它由于相比于二叉排序树,降低了树高,即一个结点内可存取多个数据,这就导致树的高度有效减少,从而减少了从硬盘访问的次数。而B+树,则是对B树的优化,在B树的基础上,最下层为真实数据,B+树类似于分块查找的索引存储结构,树的最下层结点用单链表串起来,为表中真实数据,而上面的每一层都是一个小的索引表,最上面的根为总目录,用户用B+树的时候,是从上面开始查,就跟翻看课本的目录一样,先看大目录,之后小目录套小目录,直到查到最后一层(真实数据),随后在最后一层的单链表对应的位置,往后顺序查找。


目录

一、B树

        1.1-简介:

1.2-B树的高(磁盘存取次数)

1.3-B树的插入

1.4-B树的删除

1.4.1-第一种情况是:在终端节点删除

1.4.2-第二种情况是:在非终端结点删除

二、B+树

2.1-简介

2.2-B+树于B树的不同点:​编辑

一、B树

        1.1-简介:

        总的计算知识点,全在图里。主要有B树中结点总数据范围的计算。根结点,终端节点,叶子节点的区分,首先公式中的字母含义。m为几阶B树(B树中结点中度最多的便是m),n为总数据个数,即关键字数。此外,查找的时候,是类中序查找的,大小排序就根平衡二叉树差不多只不过B树中的平衡因子都为0,左小又大,支持随机查找——先在结点内遍历,遍历不到,再去相应区间去往下遍历。

1.2-B树的高(磁盘存取次数)

树的高度越低,就可以减少内外存互访的次数,大大节约时间,提高效率。而树高的计算。即上下限,看上图即可。公式里面的树高计算都是向上取整。

1.3-B树的插入

B树的插入(考虑结点内数据上限,避免失衡),有很多种情况,每次插入的时候都要判断,结点内数据是否失衡,即是否超过上限m-1个数据,如果超过,则需要进行相应的调整。每次调整都是先选该结点内数据中间位置那个数据作为新根,融进其原父结点中去,其他剩余结点,根据左小右大原则,进行分配。

1.4-B树的删除

删除需要注意结点内数据的下限,其中结点分根节点和非根终端节点。

删除分两种情况

1.4.1-第一种情况是:在终端节点删除

例题:

1.4.2-第二种情况是:在非终端结点删除

我觉得最好的方法是,先给中序遍历写出来,然后删除谁,让它的前驱或者后继,补过去就行,原来前驱或后继的位置就空了,然后再根据终端节点删除规则,进行平衡调整即可,

二、B+树

2.1-简介

        B+树,则是对B树的优化,在B树的基础上,最下层为真实数据,B+树类似于分块查找的索引存储结构,树的最下层结点用单链表串起来,为表中真实数据,而上面的每一层都是一个小的索引表,最上面的根为总目录,用户用B+树的时候,是从上面开始查,就跟翻看课本的目录一样,先看大目录,之后小目录套小目录,直到查到最后一层(真实数据),随后在最后一层的单链表对应的位置,往后顺序查找。

2.2-B+树于B树的不同点:

1-B+树中的叶子节点为真实数据,B树中的叶子节点为空,

2-B+树中m阶树,每个分支节点至少有m/2相向上取整个子树。最多有m棵子树

3-B+树支持快速查找,顺序查找,即只要遍历到最底层叶子节点,就可以通过叶子节点这个串成的单链表,进行顺序查找,无序再往上挨个遍历了。

4-B+树适合范围查找。先通过根节点出发,找到特定范围的学生,然后顺着这个结点往下,直到叶子节点单链表,随后按照顺序查找也好,折半查找也好,往后查找范围即可。

5-B+树根结点范围【2,m-1】(因为B+树根节点其实就是个大目录,索引表,好多个分叉,最后汇总,目录里肯定之上有两个目录信息),B+树的非根结点范围【\frac{m}{2}向上取整,m】

  B树的根节点范围【1,m-1】,B树的非根结点范围【\frac{m}{2}向上取整-1,m-1】

6-B+树中只有叶节点才包含有效信息,其他索引表内结点都是索引作用。

其实根据上面解释,加看图就知道这些区别啦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

18-数据结构-查找-B树和B+树 的相关文章

  • 录音如何转文字?这几款音频转文字工具可以给到你帮助

    记录文本速度总是赶不上倾听语音速度 咋整 别急 这有一招献给你 我们可以借助音频转文字工具 快速将语音信息转写 轻松解放双手 音频转文字工具不仅转写语音的速度快 而且转写效果杠杠的 值得一试哦 话不多说 音频转文字免费教程双手奉上 有需要的

随机推荐

  • DS18B20温度传感器使用介绍

    DS18B20温度传感器简介 DS18B20是一种数字温度传感器 应用非常广泛 它输出的是数字信号 同时具有体积小 硬件资源耗费少 抗干扰能力强 精度高等特点 DS18B20温度传感器特点 1 采用单线接口方式 DS18B20温度传感器仅需
  • 实现按钮悬停动画

    知识点与技巧 伪元素 使用伪元素来作为按钮悬停效果动画展示的元素 z index 的使用技巧 使用z index属性来控制按钮和伪元素的层次关系 transform transition 复习 使用transform transition两
  • 舵机的使用方法和一些注意事项

    舵机是我们经常使用的一个工具 它可以说是直流电机的进化版本 只需要一根信号线就能方便的控制舵机旋转固定的角度 下面我们就来看一看舵机的使用方法和一些使用过程中的注意事项 一般的舵机总共有三条线 电源线 供电线 和信号线 其中红色的是电源正极
  • 在idea隐藏掉不想要看到的文件(设置隐藏文件)

    一 为什么隐藏 因为想 通常 我们会在项目中 看到很多不常用或者根本不操作的文件 那么 我们就会选择 隐藏 掉 注 但是需要心中有数 有些文件隐藏后 可能会影响开发 谨慎 二 如何设置 1 找到File gt Setting gt File
  • vite和esbuild/roolup的优缺点

    esbuild 优点 基于go语言 go是纯机器码 不使用 AST 优化了构建流程 多线程并行 缺点 esbuild 没有提供 AST 的操作能力 所以一些通过 AST 处理代码的 babel plugin 没有很好的方法过渡到 esbui
  • 第十天Python之面向对象(OOP)基本概念

    面向对象编程 Object Oriented Programming 简写 OOP 目标 了解 面向对象基本概念 一 面向对象基本概念 我们之前学习的编程方式就是 面向过程 的 面向过程 和 面向对象 是两种不同的 编程方式 对比 面向过程
  • Linux学习笔记--rm命令(删除文件或目录)

    rm 英文名remove 删除的意思 1 命令格式 rm 选项 文件或目录 2 常用选项 rm f 强行删除 忽略不存在的文件 不提示确认 f为force的意思 rm i 进行交互式删除 即删除时会提示确认 i为interactive的意思
  • CentOS7.x系统中使用Docker时,在存储方面需要注意的问题

    简述 1 Docker 1 12 6 v17 03文档中CentOS7系统下安装时 明确说明 用于生产时 必须使用devicemapper驱动的direct lvm模式 需要我们提前准备好块设备 以提供更好的稳定性和性能 默认使用devic
  • Java阿里云短信发送工具类

    短信服务API介绍 阿里云短信发送 调用SendSms发送短信 短信服务 阿里云帮助中心
  • 基于Hutools图片上传下载

    1 pom依赖
  • Python视觉处理(二)线检测

    python线检测使用的时cv HoughLinesP 函数 它有两个参数 minLineLength 线的最短长度 比这个线短的都会被忽略 MaxLineGap 两条线之间的最大间隔 如果小于此值 这两条线就会被看成一条线 这个函数的返回
  • 物理层(1.物理层基本概念&2.数据通信基础知识)

    物理层的作用就是在连接计算机的传输介质上传输数据比特流 并且尽可能屏蔽掉传输媒体和通信手段的差异 一 物理层的基本概念 1 机械特性 指明接口所用接线器的形状和尺寸 引线数目和排列 固定和锁定装置等 2 电气特性 指明在接口电缆的各条线上出
  • 五大常用算法之三:动态规划

    动态规划 动态规划 Dynamic Programming 简称DP 需要分解出问题的子结构以及通过子结构重新构造最优解 动态规划不像回溯法 有套路可以套用 动态规划需要大量练习 才能掌握规律 一般思路 1 判断问题的子结构 有最优子结构时
  • vit网络模型简介

    目录 一 前言 1 1 Transformer在视觉领域上使用的难点 1 2 输入序列长度的改进 1 3 VIT对输入的改进 二 Vision Transformer模型 2 1 Embedding层 2 2 Transformer Enc
  • Java 8 – 从一个 Stream中过滤null值

    复习一个Stream 包含 null 数据的例子 Java8Examples java package com mkyong java8 import java util List import java util stream Colle
  • 人工智能涉及算法

    最近需要提交高级人工网络的课程论文 故查找一下资料 做如下记录 后期会继续补充部分算法的的详细内容 自己的理解和代码实现部分 人工智能的三大基石 算法 数据和计算能力 就算法来看 涉及如下几种 一 按照模型训练方式不同分类 可以分为监督学习
  • shell编程实现:依次提示用户输入3个整数,脚本根据数字大小依次排序输出3个数字。

    关于这个题目 有如下代码 bin bash read p 请输入一个整数 num1 read p 请输入一个整数 num2 read p 请输入一个整数 num3 tmp 0 if num1 gt num2 then tmp num1 nu
  • WXSS:微信小程序版CSS

    完整微信小程序 Java后端 技术贴目录清单页面 必看 WXSS WeiXin Style Sheets 是一套样式语言 用于描述 WXML 的组件样式 WXSS 用来决定 WXML 的组件应该怎么显示 为了适应广大的前端开发者 WXSS
  • MySQL 输入任何语句都提示You must reset your password using ALTER USER 解决方法

    安装并配置完成MySQL 5 7 21 修改第一次密码并登陆后 出现提示 You must reset your password using ALTER USER 的提示错误语句 解决办法如下 SET PASSWORD PASSWORD
  • 18-数据结构-查找-B树和B+树

    简介 B树和B 树 都是当存储数据较大时 从硬盘读取数据的优化 emm 我这么说有点迷糊 还是从应试考试的角度解释吧 B树和B 树 都是在二叉排序树的基础上 优化的 跟二叉排序树很像 但B树它由于相比于二叉排序树 降低了树高 即一个结点内可