数据结构(七)——B树和B+树

7.4.1_1 B树

5叉查找树

//5叉排序树的结点定义
struct Node {ElemType keys[4];          //最多4个关键字struct Node &child[5];     //最多5个孩子int num;                   //结点中有几个关键字
};

如何保证查找效率?
eg:对于5叉排序树,规定除了根节点处。任何结点都至少有3个分叉,2个关键字

策略: ①m叉查找树中,规定除了根节点外,任何结点至少有\left \lceil m/2 \right \rceil个分叉,即至少含有\left \lceil m/2 \right \rceil -1个关键字
②m叉查找树中,规定对于任何一个结点,其所有子树的高度都要相同。

7.4.1 B树

B树,又称多路平衡查找树,B树中所被允许的孩子个数的最大值称为B树的阶,通常用m表示。一棵m阶B树或为空树,或为满足如下特性的m叉树:
1)树中每个结点至多有m棵子树,即至多含有m-1个关键字。
2)若根结点不是终端结点,则至少有两棵子树。
3)除根结点外的所有非叶结点至少有\left \lceil m/2 \right \rceil棵子树,即至少含有\left \lceil m/2 \right \rceil -1个关键字。
5)所有的叶结点都出现在同一层次上,并且不带信息(可以视为外部结点或类似于折半查找判定树的查找失败结点,实际上这些结点不存在,指向这些结点的指针为空)。





7.4.1_2 B树的插入和删除

B树的插入


7.4.1_3 B+树

一棵m阶的B+树需满足下列条件:
1)每个分支结点最多有m棵子树(孩子结点)。
2)非叶根结点至少有两棵子树,其他每个分支结点至少有「m/2]棵子树。
3)结点的子树个数与关键字个数相等。
4)所有叶结点包含全部关键字及指向相应记录的指针,叶结点中将关键字按大小顺序排列,并且相邻叶结点按大小顺序相互链接起来。
5)所有分支结点中仅包含它的各个子结点中关键字的最大值及指向其子结点的指针。

B+树 VS B树
m阶B+树:
1)结点中的n个关键字对应n棵子树
2)根节点的关键字数n∈[1, m]
其他结点的关键字数n\in [\left \lceil m/2 \right \rceil ,m]
3)在B+树中,叶结点包含全部关键字,非叶结点中出现过的关键字也会出现在叶结点中
4)在B+树中,叶结点包含信息,所有非叶结点仅起索引作用,非叶结点中的每个索引项只含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。

m阶B树:
1)结点中的n个关键字对应n+1棵子树
2)根节点的关键字数n∈[1, m-1]。
其他结点的关键字数n\in [\left \lceil m/2 \right \rceil -1,m-1]
3)在B树中,各结点中包含的关键字是不重复的
4)B树的结点中都包含了关键字对应的记录的存储地址

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

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

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

相关文章

校园智能水电预付费管理系统

校园智能水电预付费管理系统是一种专为学校水电资源管理而设计的智能化系统,旨在提供全面的水电资源管理解决方案,满足校园管理者对水电资源管理的需求。该系统整合了先进的智能技术和云计算,为校园管理者提供了实时监控、自动计费、节能管理…

钉钉OA审批评论接口,如何@ 人并发送通知

钉钉OA审批评论接口,如何 人并发送通 问题描述: 相关接口:https://oapi.dingtalk.com/topapi/process/instance/comment/add 我希望在钉钉oa审批流程中,添加评论的同时通过“”或者其他方式提醒流程发起人去跟进审批工作。 但我…

【Linux】Linux信号

目录 信号的概念 生活中的信号 Linux中的信号 kill命令 kill 命令的使用 常见的信号 命令行代码示例 注意事项 信号的处理方式 产生信号 信号的捕捉 信号捕捉示意图 内核如何实现信号捕捉 信号的捕捉与处理 小结 阻塞信号 信号在内核中的表示图 信号集操作函数…

linux 挂载云盘 NT只能挂载2T,使用parted挂载超过2T云盘

一、删除原来挂载好的云盘和分区 1、查看挂载号的云盘 fdisk -l 发现我们有5千多G但是只挂载了2T,心里非常的慌张!十分的不爽! 好,我们把它干掉,重新分区! 2、解除挂载 umount /homeE 没保存跳转到&…

「每日跟读」英语常用句型公式 第14篇

「每日跟读」英语常用句型公式 第14篇 1. As far as __ is concerned 就__ 而言 As far as the project timeline is concerned, we’re running ahead of schedule. (就项目时间表而言,我们进度超前了。) As far as the exam results ar…

二分查找的时间复杂度的讲解

二分查找的代码: 二分查找的时间复杂度: 最坏的情况: 就是找不到和查找区间只剩一个值的时候,这两种都是最坏的结果,假设查找了x次,达到了最坏的结果: N代表每一次折半区间数据的个数&#xf…

GNeRF的一些具体细节

Abstract GNeRF,一个结合生成对抗网络(GAN)和神经辐射场(NeRF)重建的框架,用于未知甚至随机初始化相机姿态的复杂场景。最近基于 NERF 的进展已经获得了显着的现实新视图合成的普及。然而,大多数方法都严重依赖于摄像机姿态的精确估计&#…

【过程11】——教育被点燃的路上

这里写目录标题 一、背景二、过程1.两年四十万的认知改变2.三年打工仔的经历改变3.一年计算机的人生蜕变4.后面的展望 三、总结 一、背景 人生在世,对于一些事情的笃信笃行;背后真的会有莫大无以言表的波涛。 这个事情到现在已经五年半左右时间了&#…

分类算法——文章分类(五)

文章分类计算 计算结果 P(C|Chinese,Chinese,Chinese,Tokyo,Japan)-->P(Chinese, Chinese, Chinese, Tokyo, Japan|C) * P(C)/P(Chinese, Chinese, Chinese, Tokyo, Japan) P(Chinese|C)5/8 P(Tokyo|C) 0 P(Japan|C) 0思考:我们计算出来某个概率为0,…

导致苹果IPA应用APP打开提示“已到期”的原因及解决办法

哈喽,大家好呀,淼淼又来和大家见面啦,有许多小伙伴们在使用iOS设备的时候,有时候可能会遇到打开某个IPA应用时出现“已到期”的提示,这种情况通常会发生在开发者证书过期、时间设置问题、重新签名错误等情况下。这一期…

李沐46_语义分割和数据集——自学笔记

语义分割 语义分割将图片中的每个像素分类到对应的类别。 实例分割(目标检测的进化版本) 如果有物体,会区别同一类的不同物体。 语义分割重要数据集:Pascal VOC2012 %matplotlib inline import os import torch import torch…

Java -- (part12)

一.权限修饰符 1.属性:用private ->封装思想 2.成员方法public ->便于调用 3.构造public ->便于new对象 二.final关键字 1.修饰类 a.格式 -- public final class 类名 b.特点:不能被继承 2.修饰方法 a.格式:修饰符 final 返回值类型 方法名(形参){} b.特点…

C++内存管理——new/delete、operator new/operator delete

内存管理 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd";int* ptr1 (int*)malloc(sizeof(int) * 4);int* pt…

技术速递|.NET 智能组件简介 – AI 驱动的 UI 控件

作者:Daniel Roth 排版:Alan Wang AI 的最新进展有望彻底改变我们与软件交互和使用软件的方式。然而,将 AI 功能集成到现有软件中可能面临一些挑战。因此,我们开发了新的 .NET 智能组件,这是一组真正有用的 AI 支持的 …

OCP-数据库中的小米SU7

oracle ocp ​数据库中的SU7 ​好看又好用 需要找工作和落户的快来

帮助中心最核心的内容,你都知道吗?

帮助中心,其实就是个解决问题的“百事通”。当你在使用某产品时,遇到了一些问题,就可以到帮助中心去查询相关的信息以解决问题。很多公司都会搭建帮助中心,那么,帮助中心的核心内容都有哪些呢?这就是今天我…

损失函数:Cross Entropy Loss (交叉熵损失函数)

损失函数:Cross Entropy Loss (交叉熵损失函数) 前言相关介绍Softmax函数代码实例 Cross Entropy Loss (交叉熵损失函数)Cross Entropy Loss与BCE loss区别代码实例 前言 由于本人水平有限,难免出现错漏&am…

【yolo数据集合并方法】

yolo数据集合并方法 1.数据集容2.数据集合并 1.数据集容 包含训练集、验证集和测试集。 每一个数据集中包含图像文件夹和标签文件夹。 yaml文件中定义了配置参数,包括目标识别的class类别: 2.数据集合并 需要修改labels文件夹下txt文件class信息&…

记录shell编程中$1,$@等符号的含义

笔者最近老是遇到shell中的$相关的题目,于是打算写篇文章记录一下。考虑到并没有特别多需要解释的内容,所以并不会进行介绍,上图上表上代码,让机器说话,machine always right test.sh #/bin/bash echo $# $# echo …

gcc原理和使用

gcc gcc是什么 GCC,全称 GNU Compiler Collection(GNU 编译器套件),是一套功能强大的编程语言编译器,由自由软件基金会(Free Software Foundation, FSF)作为GNU项目的一部分开发和维护。它最初…