【数据结构】B树与B+树的联系与区别

 1. 概念

一棵m阶B树:

  1. 树中每个结点至多有m棵子树。(即至多含有m-1个关键字,两颗子树指针夹着一个关键字);
  2. 若根结点不是终端结点,则至少有两颗子树。(至少一个关键字);
  3. 除根结点外的所有非叶子结点至少有[m/2]棵子树。(即至少含有[m/2]-1个关键字);
  4. 所有的叶子结点出现在同一个层次上,不带信息。(就像是折半查找判断树中查找失败的结点)。每一个结点中的关键字满足从左到右依次增大的规则。

B+树:

  1. n棵子tree的节点包含n个关键字,不用来保存数据而是保存数据的索引。
  2. 所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
  3. 所有的非终端结点可以看成是索引部分,结点中仅含其子树中的大(或小)关键字。
  4. B+树中,数据对象的插入和删除仅在叶节点上进行。
  5. B+树有2个头指针,一个是树的根节点,一个是小关键码的叶节点。

B树和B+树都是用于实现对磁盘数据的高效存取和索引的数据结构,它们的联系和区别如下:

2. 联系

  1. B树和B+树都是多叉树。
  2. B树和B+树的节点都可以存储多个数据项。
  3. B树和B+树的查找、插入、删除操作都是基于节点的分裂与合并。

3. 区别

  1. B树的节点既可以存储数据项,也可以存储子节点指针;而B+树的节点只存储数据项,所有子节点都通过指针连接在一起,形成一个有序链表。
  2. 在B树中,数据项分散存储在各个节点中,因此在进行区间查找时,需要递归遍历所有可能包含目标数据的节点;而在B+树中,所有数据项都存储在叶子节点上,因此区间查找时只需要按照链表顺序遍历叶子节点即可,效率更高。
  3. 在B树中,节点分裂后,新节点继承原节点的部分数据项和指针,因此节点分裂时需要重新平衡整个子树;而在B+树中,节点分裂后,新节点只继承原节点的数据项,因此不需要重新平衡整个子树,只需调整相邻节点的指针即可。
  4. B树通常用于内存中的数据结构,而B+树通常用于磁盘文件系统、数据库等需要大规模存储数据的应用中。

综上所述,B+树相对于B树具有更高的查询效率、更高的存储利用率和更简单的维护方式,因此在实际应用中B+树被广泛使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/116167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端设计模式】之享元模式

享元模式是一种结构型设计模式,它通过共享对象来减少内存使用和提高性能。在前端开发中,享元模式可以用于优化大量相似对象的创建和管理,从而提高页面的加载速度和用户体验。 享元模式特性 共享对象:享元模式通过共享相似对象来…

网络通信和tcp协议

一、计算机网络架构模型 1、OSI七层模型 2、TCP/IP模型 3、TCP/IP协议族 无论是什么网络模型,都是为上一层提供服务,抽象层建立在低一层提供的服务上,每层都对应不同的协议 4、地址和端口号 1)MAC地址 MAC 地址共 48 位&#…

RAM(recognize anything)—— 论文详解

一、概述 1、是什么 RAM 论文全称 Recognize Anything: A Strong Image Tagging Model。区别于图像领域常见的分类、检测、分割,他是标记任务——即多标签分类任务(一张图片命中一个类别),区分于分类(一张图片命中一个…

读书笔记:Effective C++ 2.0 版,条款43(多继承)、条款44(概念明确)、条款45-50(杂项)

条款43: 明智地使用多继承 并没有禁止,从概念上讲,多继承可能更符合真实世界。 条款44: 说你想说的;理解你所说的 概念明确 条款45: 弄清C在幕后为你所写、所调用的函数 隐性成本,看下编译后的c、asm源码。 条款46: 宁可编译和…

Java基础(第一期):IDEA的下载和安装(步骤图) 项目结构的介绍 项目、模块、类的创建。第一个代码的实现

文章目录 IDEA1.1 IDEA概述1.2 IDEA的下载和安装1.2.1 下载1.2.2 安装 1.3 IDEA中层级结构介绍1.3.1 结构分类1.3.2 结构介绍project(项目、工程)module(模块)package(包)class(类) …

安全渗透测试之信息收集

一、什么需要收集? 1.1 whois 得到域名注册人的信息(邮箱、电话、姓名) 1.2子域名 可以扩大攻击范围,子域名一定是有关联的,很多时候基本上都同属一个公司 1.3端口探测 危险端口能直接爆破入侵,一个IP能搭建多个网站,分布在不同端口 1.4目录扫描 目录扫描有时能…

【Javascript】等于与全等于

var a1;if(a1){console.log(你好!!);} 如果a赋值为 1 的时候 var a1;if(a1){console.log(你好!!);}仍然会执行 console.log(你好!!); 所以在开发中如果if语句里要使用等于的时候使用 var a1;if(a1)…

基于Java的疫苗接种管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

图像分割 人脸分割CVPR2023笔记

目录 cvpr2023的分割 轻量级语义分割 DFNet ICNet BiSeNets 人脸分割: M2SNet创新点 损失函数: LossN

AM@麦克劳林公式逼近以及误差分析

abstract 麦克劳林公式及其近似表示的应用误差估计和分析 Lagrange型泰勒公式的估计误差 由Lagrange型余项泰勒公式可知,多项式 p n ( x ) p_n(x) pn​(x)近似表达函数 f ( x ) f(x) f(x)时,其误差为 ∣ R n ( x ) ∣ |R_{n}(x)| ∣Rn​(x)∣ R n ( x ) R_{n}(x) Rn​(x) f …

windows服务器和linux服务器的ssh免密登录失败的解决方案

1. windows服务器的ssh免密登录失效的解决方法 原因: 1. 去掉了C:\ProgramData\ssh\sshd_config文件中的两行配置,也就是注释掉: #Match Group administrators #AuthorizedKeysFile PROGRAMDATA/ssh/administrators_authorized_keys 2. aut…

LeetCode 11. 盛最多水的容器

盛水最多的容器 题目链接 11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。…

2023 uniapp( vue3)使用canvas生成海报并保存,taro/微信小程序也适用

有段时间没写vue了&#xff0c;有点生疏了...... 1、代码有注释&#xff0c;完整代码如下 <template><view class"page"><canvas class"canvas" v-if"isShow" :style"{width:${canvasWidth}px,height:${canvasHeight}px}&…

spring cloud Eureka集群模式搭建(IDEA中运行)《二》

上一篇集群配置文件完善 上一篇博客&#xff0c;想必大家都学会了Eureka集群模式的搭建和运行&#xff0c;针对上一篇的配置文件进行了优化&#xff0c;在这里分享给大家。上一篇主要有3个配置文件&#xff0c;分别对应3个不同的服务&#xff0c;这种形式配置文件分别写在了不…

uni-app 小宠物 - 会说话的小鸟

在 template 中 <view class"container"><view class"external-shape"><view class"face-box"><view class"eye-box eye-left"><view class"eyeball-box eyeball-left"><span class"…

Learning Open-World Object Proposals without Learning to Classify(论文解析)

Learning Open-World Object Proposals without Learning to Classify 摘要1 介绍2 相关工作3 方法3.1 基线3.2 基于纯定位的对象性3.3. 对象定位网络 (OLN)4 实验4.1跨类泛化4.2.开放世界类不可知检测4.3更多的跨数据集泛化4.3.1 Objects365 泛化4.3.2 EpicKitchens 的泛化4.4…

LeetCode LCR 179. 查找总价格为目标值的两个商品

和为 s 的两个数字 题目链接 LCR 179. 查找总价格为目标值的两个商品 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况&#xff0c;返回任一结果即可。 示例 1&#xff1a; 输入&#xff1a;price [3, 9, 12, …

Hadoop3教程(三十六):(生产调优篇)企业开发场景中的参数调优案例概述

文章目录 &#xff08;170&#xff09;企业开发场景案例HDFS参数调优MapReduce参数调优YARN参数调优执行程序 参考文献 &#xff08;170&#xff09;企业开发场景案例 这章仅做兴趣了解即可。 需求&#xff1a;从1G数据中&#xff0c;统计每个单词出现次数。服务器3台&#x…

【通览一百个大模型】Baize(UCSD)

【通览一百个大模型】Baize&#xff08;UCSD&#xff09; 作者&#xff1a;王嘉宁&#xff0c;本文章内容为原创&#xff0c;仓库链接&#xff1a;https://github.com/wjn1996/LLMs-NLP-Algo 订阅专栏【大模型&NLP&算法】可获得博主多年积累的全部NLP、大模型和算法干货…

Delphi 编程实现拖动排序并输出到文档

介绍&#xff1a;实现拖动排序功能&#xff0c;并将排序后的内容输出到文档中。我们将使用 Delphi 的组件来创建一个界面&#xff0c;其中包括一个 Memo 控件用于输入内容&#xff0c;一个 ListBox 控件用于显示排序后的内容&#xff0c;并且提供按钮来触发排序和输出操作。 代…