B+树的定义以及查找

2023-09-21 11:33:15

1.B+树的定义

一棵m阶的B+树需满足下列条件:

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

要追求“绝对平衡”,即所有子树高度要相同。

例如:一颗4阶B+树
在这里插入图片描述

2.B+树的查找

1.多路查找

从根节点开始从上到下查找。
B+树中,无论查找成功与否,最终一定都要走到最下面一层结点。

2.顺序查找

使用指针,依次从叶子结点开始查找。

3.B+树和B树的区别

1.m阶B+树:
  1. 结点中的n个关键字对应n棵子树
  2. 根节点的关键字数 n = [ 1 , m − 1 ] n=[1, m-1] n=[1,m1],其他结点的关键字数n= [ [ m / 2 ] − 1 , m − 1 ] [[m/2]-1, m-1] [[m/2]1,m1]
  3. 在B树中,各结点中包含的关键字是不重复的.
  4. 在B+树中,叶结点包含信息,所有非叶结点仅起索引作用,非叶结点中的每个索引项只含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。

在B+树中,非叶结点不含有该关键字对应记录的存储地址
可以使一个磁盘块可以包含更多个关键字,使得B+树的阶更大,
树高更矮读磁盘次数更少,查找更快.

2.m阶B树:
  1. 结点中的n个关键字对应n+1棵子树
  2. 根节点的关键字数 n = [ 1 , m ] n=[1, m] n=[1,m],其他结点的关键字数 n = [ [ m / 2 ] , m ] n=[ [m/2], m] n=[[m/2],m]
  3. 在B+树中,叶结点包含全部关键字,非叶结点中出现过的关键字也会出现在叶结点中
  4. B树的结点中都包含了关键字对应的记录的存储地址
m阶B树m阶B+树
类比二叉查找树的进化一>m叉查找树分块查找的进化一>多级分块查找
关键字与分叉n个关键字对应n+1个分叉(子树)n个关键字对应n个分叉
查找方式不支持顺序查找。查找成功时,可能停在任何一层结点,查找速度“不稳定”支持顺序查找。查找成功或失败都会到达最下一层结点,查找速度“稳定”
结点包含的信息所有结点中都包含记录的信息只有最下层叶子结点才包含记录的信息(可使树更矮)
相同点除根节点外,最少「m/2]个分叉(确保结点不要太“空") 任何一个结点的子树都要一样高(确保“绝对平衡”)
更多推荐

blog--2建站

建站1loginorsigningithub2在github账户中创建一个项目名为你的Github用户名.github.io这是存放生成出来的网站文件的地方3在本地环境编写网站(原因开头:每次更新发布都需要修改整个网站延迟2min左右)选择hugo主题模板网站的地方https://themes.gohugo.io/打开

微服务生态系统:使用Spring Cloud构建分布式系统

文章目录什么是微服务?为什么选择SpringCloud?SpringCloud的关键组件示例:构建一个简单的微服务步骤1:创建SpringBoot项目步骤2:配置Eureka服务发现步骤3:创建REST控制器步骤4:运行项目步骤5:使用Feign进行服务间通信构建更大规模的微服务生态系统1.安全性2.监控和追踪3.熔断

企业怎么优化固定资产管理

在优化固定资产管理的过程中,不仅要关注硬件设备和设施的维护,还要重视软件系统和数据管理。一些可能的方法:需要建立一套完整的资产管理系统。这个系统应该包括资产的采购、登记、使用、维修、报废等各个环节的管理流程。通过这个系统,可以实时了解每个资产的状态,及时发现并解决潜在的问题。应该对固定资产进行定期的盘点和维护。这不仅可

PostgreSQL 排查慢 SQL

文章目录前言1.日志参数设置2.pg_stat_statements插件2.1确认是否安装插件2.2编译插件2.3载入插件2.4插件使用3.慢SQL排查手段3.1查询当前会话3.2查看TOPSQL前言所谓慢SQL是指在数据库中执行时间超过指定阈值的语句。慢查询太多,对于业务而言,是有很大风险的,可能随时都会因为某种原因

使用Git把项目上传到Gitee的详细步骤

1.到Git官网下载并安装2.到Gitee官网进行注册,然后在Gitee中新建一个远程仓库3.设置远程仓库的参数4.返回Gitee查看仓库是否生成成功5.新建一个文件夹作为你的本地仓库6.将新建好的文件夹初始化成本地仓库第一步:右键点击刚创建的本地仓库,然后点击GitBashHere第二步:在命令行里输入gitinit

八、【漏洞复现】jupyter-notebook 命令执行(CVE-2019-9644)

8.0、基础知识1、测试功能点(这种情况基本上很难遇到)8.1、漏洞原理​JupyterNotebook是一套用于创建、共享代码和说明性文本文档的开源Web应用程序。JupyterNotebook可直接使用命令行执行任意命令。​8.2、影响范围未授权开启终端权限的系统8.3、指纹识别1.有主页与明显logo主页:log

常见web漏洞原理整理

文章目录一、SQL注入1.1SQL注入漏洞原理1.2SQL注入的两个关键点1.3与Mysql注入相关的知识点1.4SQL注入的主要分类1.5SQL注入的流程1.5.1普通SQL注入1.5.2盲注1.6SQL注入总结二、文件上传2.1文件上传漏洞原理2.2客户端检测及绕过(JS检测与绕过)2.3服务端检测2.3.1后缀名

力扣常见算法题

LeetCode上的问题可以有很多不同的解题思路,具体的解法取决于问题的要求和限制条件。以下是一些常见的解题思路和Python代码示例:文章目录思路1.暴力法(BruteForce):2.哈希表(HashTable):3.双指针(TwoPointers):4.动态规划(DynamicProgramming):例题1.两

【第43篇】CLIP:从自然语言监督中学习可迁移的视觉模型

摘要最先进的计算机视觉系统被训练来预测一组固定的预定对象类别。这种受限制的监督形式限制了它们的通用性和可用性,因为需要额外的标记数据来指定任何其他视觉概念。直接从有关图像的原始文本中学习是一种很有前途的替代方案,它利用了更广泛的监督来源。我们证明了预测哪个标题与哪个图像搭配的简单预训练任务是一种有效且可扩展的方式,可以

华纳云:Ubuntu中怎么配置lamp环境

LAMP(Linux、Apache、MySQL、PHP)是一种常用于搭建Web服务器的开发环境。在Ubuntu中配置LAMP环境相对简单,以下是配置的基本步骤:安装ApacheWeb服务器:打开终端,运行以下命令安装Apache:sudoaptupdatesudoaptinstallapache2安装完成后,启动Apa

使用 PyTorch 的计算机视觉简介 (3/6)

一、说明在本单元中,我们将了解卷积神经网络(CNN),它是专门为计算机视觉设计的。卷积层允许我们从图像中提取某些图像模式,以便最终分类器基于这些特征。二、卷积神经网络计算机视觉不同于通用分类,因为当我们试图在图片中找到某个物体时,我们正在扫描图像以寻找一些特定的图案及其组合。比如在寻找猫的时候,我们首先可能会寻找水平线

热文推荐