当前位置: 首页 > news >正文

数据库系统:使用例子解释B树中元素的添加和删除

在计算机科学中,B树(英语:B-tree)是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树(binary search tree)一个节点可以拥有2个以上的子节点。与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。——维基百科

每个B树存在一个参数m,每个节点可以存储最少m-1,最多2m-1个值,也就是说每个节点可以存储最少m个、最多2m个指向子节点的key。其中,根结点可以存储少于m个节点。

以两道题为例详解B树中元素的添加和删除,题中m=3.

个人经验:任何一个非叶节点,里面的任何节点,都应该有左节点和右节点。

1. 将50添加到B树中

在这里插入图片描述
添加键值对的规则:
1.总是被添加进叶子节点。
2.当被添加节点超过2m-1个值,将叶子节点拆分,将中间节点加入其父节点。如果使得父节点超过2m-1个值,则继续递归拆分父节点。当根节点被拆分,应该重新建立新的根节点,

那么这一题,我们首先尝试将50添加到叶子节点中,发现可以添加到结点38~49,但是该节点即将超过2m-1个值,所以将中间值42升至父节点,从而拆分该叶节点。

在这里插入图片描述
同理,父节点也将以37为中间值进行拆分,37将升入其父节点(此处省略)。
在这里插入图片描述

2.删除B树中的51

在这里插入图片描述
删除key的规则:
如果当前需要删除的key位于非叶子节点上,
1.则用后继key(这里的后继key均指后继记录的意思)覆盖要删除的key,然后在后继key所在的子支中删除该后继key。此时后继key一定位于叶子结点上,这个过程和二叉搜索树删除结点的方式类似。删除这个记录后执行第2步
2.该结点key个数大于等于m-1,结束删除操作,否则执行第3步。
3.如果兄弟结点key个数大于m-1,则父结点中的key下移到该结点,兄弟结点中的一个key上移,删除操作结束。
否则,将父结点中的key下移与当前结点及它的兄弟结点中的key合并,形成一个新的结点。原父结点中的key的两个孩子指针就变成了一个孩子指针,指向这个新结点。然后当前结点的指针指向父结点,重复上第2步。

如果当前需要删除的key位于叶子节点上,直接删除,然后根据B树的原则使用兄弟节点进行平衡。

那么这一题,我们发现51位于42的右节点,将其删去,发现该节点子节点的数量少于m-1个,然后发现其兄弟节点只有m-1个节点,满足融合条件,融合在一起。
在这里插入图片描述

参考链接:
https://zh.wikipedia.org/wiki/B%E6%A0%91
https://zhuanlan.zhihu.com/p/134056266
https://www.cnblogs.com/nullzx/p/8729425.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

[HDU2520]我是菜鸟,我怕谁(每日一题5.30)

题目链接&#xff1a;Problem - 2520 (hdu.edu.cn) 乍一看这个题&#xff0c;发现不就是匀加速直线运动么&#xff0c;于是写出了如下的代码&#xff1a; #include <iostream>using namespace std;int d(int t);int main() {int T;cin >> T;while(T--){int t;cin …...

第二讲:基本飞行姿态

四旋翼在其四个轴臂上四个桨的高速转动作用下&#xff0c;会受到四个桨的拉力&#xff0c;拉力方向与机身垂直&#xff0c;当四个桨产生的拉力总和大于机身重力时&#xff0c;飞机处于上升状态&#xff1b;当总拉力小于机身重力时&#xff0c;飞机处于下降状态&#xff1b;当总…...

MySQL索引用法实例分析

建议看原文&#xff1a;https://www.jb51.net/article/88846.htm 这篇文章主要介绍了MySQL索引用法,结合实例形式较为详细的分析了mysql索引的功能、定义、使用方法与相关注意事项,需要的朋友可以参考下 本文实例分析了MySQL索引用法。分享给大家供大家参考&#xff0c;具体如下…...

必看!LuatOS自定义C库全新教程,一文极速上手

今天继续讲LuatOS的开发&#xff0c;上一期简单说了一下如何移植LuatOS&#xff0c;相信很多朋友已经看过了。那么今天&#xff0c;我就开始讲C和Lua调用的部分教程。 LuatOS相关资料及Lua语言的官方定义&#xff0c;详见以下链接&#xff1a; LuatOS仓库&#xff1a; https:/…...

Xshell 连接不上Linux Centos 7的解决方法之设置静态IP

前序 最近在开发项目&#xff0c;需要在服务器部署数据库、ftp文件管理等相关内容时&#xff0c;为了方便操作&#xff0c;使用Xshell会话管理工具进行服务器操作。出现连不上服务器网络的问题&#xff0c;就所遇问题进行学习解决方案及总结记录。 配置虚拟机网络 1.在虚拟机…...

ann2snn的代码分析

首先&#xff0c;主函数是if_cnn_mnist_work.py 1.输出snn测试结果的就是这么一些代码&#xff1a; utils.pytorch_ann2snn(model_namemodel_name,norm_tensornorm_tensor,test_data_loadertest_data_loader,devicedevice,TT,log_dirlog_dir,configconfig)2.ctrl鼠标左键点击py…...

基于域名访问网站1(作业)

搭建一个基于http://www.zuoye.com:22222访问的web网站&#xff0c;网站首页在/www/http/&#xff0c;内容为zuoye 结果 过程&#xff1a; 创建网页的根目录&#xff0c;并编辑网页内容为zuoye 编辑/etc/httpd/conf.d/zuoye.conf 关闭防火墙 关闭selinux 重启httpd 编辑/…...

虚拟内存和地址空间

目录 一、物理内存vs虚拟内存 二、物理内存空间和虚拟内存空间 三、32bit的地址空间 四、cpu位宽和cpu地址总线宽 五、虚拟内存地址空间划分 六、虚拟地址和物理地址的映射 早期的计算机程序都是直接跑在物理内存上的&#xff0c;这就要求程序大小不能超过物理内存的上限…...

STM32CubMx自学笔记(一)-LED灯翻转

STM32CubMX自学笔记&#xff08;一&#xff09;---LED灯翻转工程创建系统具体配置工程代码编写下载验证结语工程创建 首先得安装STM32CubMx软件。具体安装步骤参照 保姆级安装步骤&#xff0c;这里将不再赘述&#xff0c;第一节主要是介绍新工程的创建&#xff0c;首先在桌面打…...

十四、Python第十四课——文件和异常

&#xff08;请先看这篇文章&#xff1a;https://blog.csdn.net/GenuineMonster/article/details/104495419&#xff09; 如果看完这篇博文&#xff0c;你的问题还是没有解决&#xff0c;那么请关注我的公众号&#xff0c;后台发消息给我吧&#xff0c;当天回复&#x…...

Linux下安装sqlite3

文章目录前言安装步骤测试安装成功前言 sqlite3的安装 安装步骤 依次执行以下命令&#xff1a; 1)wget http://www.sqlite.org/sqlite-3.5.6.tar.gz 2)tar -xzvf sqlite-3.5.6.tar.gz 3)cd sqlite-3.5.6 4)./configure 5)make 6)make install测试安装成功 出现红色方框信息…...

拉伯配资6月1日策略

5月回想&#xff1a;在5月份的战略中&#xff0c;我们认为其时胶着的商场可能在5月会有所改动。从实践表现来看&#xff0c;5月下旬商场明显出现了一些活泼做多的信号&#xff0c;商场也选择了向上打破。上证指数上涨超4%&#xff0c;深圳成指上涨近3%。 行情判别&#xff1a;从…...

微信小程序趋势及前景,大厂直通车!

最近看到群里看到一个女生&#xff0c;讲述了她从开始选择Android&#xff0c;经过非常努力的学习和挣扎&#xff0c;然而最后面对当前的环境却不得不放弃。看完以后真的非常替她感觉惋惜&#xff0c;如果早几年入行可能结果会比现在好很多&#xff0c;但可惜&#xff0c;这就是…...

设计模式导读助记

各个设计模式的详细介绍都已经完成&#xff0c;但是不经常用总会忘&#xff0c;所以我想用 一句话 总结设计模式&#xff0c;思考模式的真正意图&#xff0c;再用 一点提示 来思考代码如何实现 写在前面 我整理的设计模式这一个系列&#xff0c;主要是结合了以下几本书 : 《设…...

RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之环境搭建(1/3)

文章目录前言硬件准备百问网STM32F103ESP8266 01SESP8266 介绍ESP8266 01S技术规格参数软件准备下载安装 Keil μVision5Pack Installer安装 ST-Link 驱动获取RT-Thread源码下载安装 RT-Thread env 工具文章列表 RT-Thrad|STM32F103ESP8266 S01RT-Thread联网之环境搭建(1/3)RT…...

天眼查怎么删除信息_天眼查删除信息的方法介绍

天眼查信息怎么删除 天眼查风险信息怎么清除 天眼查问答信息怎么删除 天眼查法律诉讼信息可以删吗 天涯查上的信息删除怎么操作&#xff0c;天眼查成立于2014年&#xff0c;至今发展迅速&#xff0c;已经帮助了无数的企业和消费者&#xff0c;那么很多企业的天眼查信息有时候需…...

Xxl-Job调度器原理解析

项目解析源码地址&#xff1a;https://gitee.com/lidishan/xxl-job-code-analysisxxl-job版本&#xff1a;2.3.0Xxl-Job分为执行器、调度器。而我们平时的客户端就属于一个执行器&#xff0c;执行器启动的时候会自动注册到调度器上&#xff0c;然后调度器进行远程调度。调度器初…...

51单片机利用锁存器控制数码管显示年月日时分秒

数码管模块中的两片74hc573&#xff0c;一片锁存段码&#xff0c;一片锁存位码&#xff0c;这样才能驱动8位数码管。74hc573是锁存器&#xff0c;用于数码管显示时通常是采用段选、片选共用同一组并口的驱动方式。 驱动数码管需要两个信号&#xff0c;一个是段选信号&#xff…...

webrtc之SVC实现(十)

一、概念 SVC&#xff08;可适性视频编码或可分级视频编码&#xff09;是传统H.264/MPEG-4 AVC编码的延伸&#xff0c;可提升更大的编码弹性&#xff0c;并具有时间可适性&#xff08;Temporal Scalability&#xff09;、空间可适性&#xff08;Spatial Scalability&#xff09…...

LeetCode 数值的整数次方

实现 pow(x, n) &#xff0c;即计算 x 的 n 次幂函数&#xff08;即&#xff0c;xn&#xff09;。不得使用库函数&#xff0c;同时不需要考虑大数问题。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10 输出&#xff1a;1024.00000 示例 2&#xff1a; 输入&#xf…...

moment获取本周本月本年日期及具体时分秒

import moment from moment // 本周 let start moment().startOf(week) let end moment().endOf(week) // 本月 let start moment().startOf(month) let end moment().endOf(month) // 本年 let start moment().startOf(year) let end moment().endOf(year) //获取年月日…...

AcWing 算法基础课笔记 3.搜索与图论(持续更新)

AcWing 算法基础课笔记 3.搜索与图论深度优先遍历DFS与宽度优先遍历BFS二者对比DFS深度优先遍历DFS与宽度优先遍历BFS 二者对比 都可以对整个搜索空间进行遍历。 搜索的时候都是像一棵树一样搜索。 但是搜索的顺序不一样&#xff1a; DFS 优先深度&#xff0c;到不能再前进的…...

boost::geometry模块自定义多边形示例

boost::geometry模块自定义多边形示例 实现功能C++实现代码实现功能 boost::geometry模块自定义多边形示例 C++实现代码 #include <boost/geometry/geometry.hpp> #include <boost/geometry/geometries/register/point.hpp> #include <boost/geometry/geomet…...

链接查询的学习

连接查询的学习 连接查询分为内连接查询和外连接查询 一、内连接查询 1.交叉查询&#xff08;笛卡尔积&#xff09; 交叉查询&#xff08;Cross Join&#xff09;&#xff0c;又称“笛卡尔连接&#xff08;Cartesian Join&#xff09;”或“叉乘&#xff08;Product&#xff0…...

【网盘项目日志】20210601:Seafile 离线下载系统开发(2)

诶嘿&#xff0c;儿童节快乐&#xff5e; 文章目录书接上回研究 seafevents 的 event 机制编写 handler配置文件系统数据库部分定义定时任务实现 Worker注册 Worker 和启动类写 Seahub 的路由和 View前端更正前一天的内容做一个简单的界面Seafile_API 问题定时刷新列表数据上传…...

在CodeBlocks下配置GoogleTest单元测试框架

环境准备 Windows 10Code::Blocks 20.03Google Test 1.7.0CMake 3.11.0 编译GoogleTest 一、创建一个工作目录D:\gtest&#xff0c;将刚下载的Google Test 1.7.0、CMake 3.11.0的压缩包解压到刚创建的工作目录。 二、进入CMake文件夹的bin下&#xff0c;运行cmake-gui.exe&…...

JavaScript学习:函数

问题导向 函数的基本使用&#xff1f; 如果你都有了答案&#xff0c;可以忽略本文章&#xff0c;或去JS学习地图寻找更多答案 function函数 在JS中&#xff0c;函数是一种特殊的数据类型&#xff0c;它让JS动了起来&#xff0c;有了能力&#xff0c;它可以是一个方法&#xff0…...

QT安装和配置Visualstudio环境

QT 安装下载下载 windows下载有两种方式&#xff0c; source code自己编译exe文件&#xff0c;exe文件又分为online和offline。QT 5.12可以offline&#xff0c;然而最新的QT6.1只有online安装包了。 Sourcecode没有尝试过&#xff0c; 建议下载安装版。 这里给两个下载地址&…...

第一个springboot程序

HelloWorld 微服务其实就是一种架构风格&#xff0c;MVC也是一种架构风格SpringBoot的主要思想就是自动装配&#xff0c;环境都给搭建好&#xff0c;一键生成 下面来开始入门吧 1&#xff0c;创建项目 红色为我们可以填的&#xff0c;填完会生成一个有包结构的项目&#xff…...

23种设计模式-java-观察者

模式概述&#xff1a; 允许你定义一种订阅机制&#xff0c; 可在对象事件发生时通知多个 “观察” 该对象的其他对象。 使用场景&#xff1a; 当一个对象状态的改变需要改变其他对象&#xff0c; 或实际对象是事先未知的或动态变化的时&#xff0c; 可使用观察者模式。当应用…...

关键字的基本概念和使用

1.关键字 - typedef - 类型重定义 typedef 顾名思义是类型定义&#xff0c;这里应该理解为类型重命名。 使用方法&#xff1a; typedef unsigned int uint;/*把 unsigned int 重新命名为 uint&#xff0c;当我们一个文件需要频繁使用此类型时把他重新命名为一个简单的…...

关键字详解

文章目录1.typedef2.register3.static4.structC语言为使用者提供了许多的关键字&#xff0c;这些关键字不能被使用者们所修改&#xff0c;使用者也无法自己创建关键字&#xff0c;我们在定义变量时也不能使用关键字作为变量名&#xff1b;下面由我来向大家其中的3个关键字。 下…...

高效软文推广技巧:产生共鸣才是王道

如果你想写一篇优质的网络软文&#xff0c;就不要随意去堆砌文字&#xff0c;首先你心中要想好这篇软文你需要表达的是什么意思&#xff0c;只有这样写出来的软文才会是你想要的结果&#xff0c;否则可能你写了长篇大论&#xff0c;用户还明白不了你文章要表达的是什么意思&…...

分享八个软文推广小技巧,让你在众多同行中脱颖而出!

软文推广作为现在主流的推广形式&#xff0c;想要做很容易&#xff0c;但是想要做好就要多下点功夫了&#xff0c;其实 现在大多数公司做软文推广也是在囫囵吞枣&#xff0c;雨里雾里的&#xff0c;其实想要做好软文推广就要多去 注意细节&#xff0c;俗话说细节决定成败&…...

撰写seo软文的技巧!

一、软文类型 1、今日头条一篇优质的新闻媒体软文可以提高企业知名度&#xff0c;能够让读者在不知不觉树立形象&#xff0c;让更多潜在客户增加认知度和可信度。 2、微信公众平台软文直接推送用户&#xff0c;可以更好的引导用户了解企业文化&#xff0c;参与品牌的互动活动&a…...

R 语言精简入门

R_Basic 1. 数据类型 双精度浮点数 双精度浮点数 (double) 是 R 中十进制数的默认类型double 类型的数字可以参与数学运算 字符串 字符串 (string) 是一组表示文本的字符R 中字符串使用双引号串联起来 逻辑类型 由 TRUE 和 FALSE 表示的真值或假值可以使用 & 和 | 将逻辑…...

新闻软文撰写技巧

新闻软文撰写技巧&#xff1a; 一、新闻标题 对于发布出来的软文广告通常都是企业的硬性需求&#xff0c;无非就是为了起到品牌宣传以及带动 产品销售的目标&#xff0c;但是作为软文的广告一定要考虑读者的需求和感受&#xff0c;那整篇软文广告来 讲标题就像是脸面一样的…...

为网站引暴流量的高级软文技巧!

很多seo做网站优化天天发软文&#xff0c;有发到论坛的&#xff0c;有投稿的&#xff0c;但效果如何&#xff1f;我想大多可以用“呵呵”两字概括&#xff01;其实&#xff0c;在搜索引擎算法已经趋于完善的今天&#xff0c;软文不应是以做一个简单外链为目的&#xff0c;而应该…...

深度解析优秀软文技巧,加速网站建设

网站建设过程中&#xff0c;如果一定要排序&#xff0c;站内建设要优先于站外建设&#xff0c;站内建设中&#xff0c;最重要的&#xff0c;非文章莫属。一个网站&#xff0c;如果没有好的内容填充&#xff0c;文章不具有可读性&#xff0c;不可能取得高排名高收录。今天就来介…...

新品发布常用的6个内容推广软文技巧,帮助品牌做好产品营销

企业或者品牌新品发布时&#xff0c;常常通过内容推广软文营销带来巨大的流量、参与度和销售额来帮助您成功推出产品。下面分享有六个小贴士可以帮助你理解如何利用内容营销成功地推出产品。 1、使用视觉内容来取悦你的社交媒体受众 社交媒体提供了一个经济高效的平台来推广你…...

SEO的心灵窗户:软文技巧

之前在发布《SEO市场思维的文武之道》的时候&#xff0c;我就向各位保证过&#xff0c;会总结一篇关于SEO软文技巧的文章。内容我内心其实也有过滤了几遍&#xff0c;但是就是想不到用什么标题去发布。直到我想到一个经常被大家引用的词&#xff1a;标题党&#xff0c;该词百度…...

写软文的技巧

&#xff08;1&#xff09;文章标题要吸引人。 &#xff08;2&#xff09;内容幽默生动、妙趣横生。 &#xff08;3&#xff09;图文并茂、叙议结合。 &#xff08;4&#xff09;写作语言通俗化 &#xff08;5&#xff09;排版清晰&#xff0c;让人从感官的能够接受 &a…...

软文的写作四大策略及技巧

1、讲故事软文就像讲故事一样&#xff0c;必须要有事情的开端、经过和结果才能吸引读者&#xff0c;也就是说&#xff0c;一定要有情节&#xff0c;给读者一个想“深入”阅读的感觉&#xff0c;这个技巧关键在第一段。2、文章的卖点我们写软文的时候&#xff0c;要注意文章的卖…...

PyQt5安装详细教程

先展示一下安装好后的效果如下&#xff1a; 一、安装PyQt5 1、通过使用豆瓣镜像在命令提示符 (WINR)里输入cmd打开窗口进行安装&#xff1a; 点击确定后 输入pip install PyQt5 -i https://pypi.douban.com/simple&#xff0c;等待安装 当下载界面出现Successfully&#xff08…...

配置Nginx以隐藏访问端口

进入usr/local/nginx/conf 编辑nginx.conf文件&#xff0c;在http模块中加入下句&#xff1a;include vhost/*.conf; 进入usr/local/nginx/conf/vhost/xxx.conf 编写如下内容 (nginx编译的目标目录) server { server_name //输入你的访问地址&#xff08;域名&#xff09; …...

隐藏链接反爬虫

文章目录隐藏链接反爬虫定义详细说明解决办法补充说明隐藏链接反爬虫定义 隐藏连接反爬虫指的是在网页中隐藏用于检测爬虫程序得链接手段。被隐藏得链接不会显示在页面中&#xff0c;正常用户无法访问&#xff0c;但是爬虫程序有可能将该链接放入待爬队列&#xff0c;并向该链接…...

jQuery实现点击链接显示和隐藏二维码

1.新建一个html文档&#xff0c;一个css文档&#xff0c;一个js文档 2.二维码显示之前的图片 3.二维码显示之后的图片 4.html的代码 <ul class"t-con-r f-r"><li><a href"#">我&#xff08;个人中心&#xff09;</a></li>&l…...

asp.net中如何隐藏链接传的值

Server.Transfer("Default2.aspx?XmlID1&status0");...

vue实现浏览器跳转真实URL隐藏的方法

背景 公司第一季度需求中有一段关于浏览器URL地址隐藏的需求如下&#xff1a; 需将系统的URL地址需要进行加密处理。 a)IP地址后面的信息需要控制为不能按照意思猜到或者改变页面内容&#xff0c;不能把一些参数的名称和值都在URL地址栏中暴露出来&#xff0c;需以不可表意的…...

html弹窗隐藏,js弹窗window.open 隐藏地址栏的问题location

可选项。字符串(String)。指定窗口装饰样式。使用下面的值。多个之间用逗号隔开。只有当新的浏览器窗口被建立时&#xff0c;此参数的设置才会发生作用。channelmode { yes | no | 1 | 0 }  指定是否将窗口显示为频道模式。默认值为 no 。directories { yes | no | 1 | 0 } …...