字节面试数据结构与算法:B+树的删除和插入,不够详细你打我

本文通过图解方式深入探讨B+树在数据结构中的应用,包括其在文件系统和数据库中的使用场景,以及B+树的特点。文章详细阐述了B+树的插入和删除操作,包括不同情况下的处理策略,帮助读者理解B+树的动态调整过程。
摘要由CSDN通过智能技术生成

之前在讲解mysql底层算法架构的时候,我提到了一个点:树,这个大学的时候让我们只有恨没有爱的课程中的一员,但是,最近的一段时间里,算法和数据结构成为面试过程汇总弄个地考虑重点,之前的时候图解过红黑树,也以mysql为例,将B+树的相关原理进行了讲解,想要重新回顾一下的朋友,可以去公众号:Java架构师联盟查看

今天我们来看一下B+树的应用,图解哦,开始之前先来回归一下一些基础的东西

使用场景

文件系统和数据库系统中常用的B/B+ 树,他通过对每个节点存储个数的扩展,使得对连续的数据能够进行较快的定位和访问,能够有效减少查找时间,提高存储的空间局部性从而减少IO操作。他广泛用于文件系统及数据库中,如:

Windows:HPFS 文件系统

Mac:HFS,HFS+ 文件系统

Linux:ResiserFS,XFS,Ext3FS,JFS 文件系统

数据库:ORACLE,MYSQL,SQLSERVER 等中

B+树特点

(1)根结点只有1个,分支数量范围[2,m]。

(2)除根以外的非叶子结点,每个结点包含分支数范围[[m/2],m],其中[m/2]表示取大于m/2的最小整数。

(3)所有非叶子节点的关键字数目等于它的分支数量。

(4)所有叶子节点都在同一层,且关键字数目范围是[[m/2],m],其中[m/2]表示取大于m/2的最小整数。

(5)所有非叶子节点的关键字可以看成是索引部分,这些索引等于其子树(根结点)中的最大(或最小)关键字。例如一个非叶子节点包含以下信息: (n,AO,KO,A1,K1…"n,An),其中Ki为关键字,Ai为指向子树根结点的指针,n表示关键字个数。即Ai所指字数中的关键字均小于或等于Ki,而Ai+1所指的关键字均大于Ki (i=1,2,…, n) 。

(6)叶子节点包含全部关键字的信息(非叶子节点只包含索引),且叶子结点中的所有关键字依照大小顺序链接(所以一个B+树通常有两个头指针,一个是指向根节点的root,另一个是指向最小关键字的sqt)。

不知道这些东西能不能理解啊,理解不了的话可能你大学需要回炉重造了,哈哈哈哈

接下来,开始正事吧,我以一个B+树进行串联讲解,先创建一棵树

字节面试数据结构与算法:B+树的删除和插入,不够详细你打我

主要是B+树的应用

插入数据

第一种情况:向B+树中插入数据9

字节面试数据结构与算法:B+树的删除和插入,不够详细你打我

首先查找9应插入的叶节点(最左下角的那一个)插入发现没有破坏B+树的性质,完毕

第二种情况:向B+树中插入20

字节面试数据结构与算法:B+树的删除和插入,不够详细你打我

1、首先查找20应插入的叶节点(第二个叶子节点),插入,但是这个时候改变了结构

2、发现第二个叶子节点已经破坏了B+树的性质,则把之分解成[20 21],[3744]两个,并把21往父节点移

字节面试数据结构与算法:B+树的删除和插入,不够详细你打我

3、发现父节点也破坏了B+树的性质,则把之再分解成[15 21].[4459]两个,并把21往其父节点移

字节面试数据结构与算法:B+树的删除和插入,不够详细你打我

第三种情况:向B+树中插入100

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值