什么是B树?

本文详细介绍了B树这种数据结构,包括它的定义、阶、根节点、内部节点和叶子节点的概念。在m阶B树中,每个节点最多有m个子节点,非叶节点至少有⌈ m/2⌉子节点。B树的插入和删除操作分别涉及到节点分裂、元素上移和节点合并,确保B树保持平衡。
摘要由CSDN通过智能技术生成

定义

B树是一种平衡的多分树,通常我们说m阶的B树,它必须满足如下条件:
①每个节点最多只有m个子节点。
②每个非叶子节点(除了根)具有至少⌈ m/2⌉子节点。
③如果根不是叶节点,则根至少有两个子节点。
④具有k个子节点的非叶节点包含k -1个键。
⑤所有叶子都出现在同一水平,没有任何信息(高度一致)。

什么是B树的阶 ?

  B树中一个节点的子节点数目的最大值,用m表示,假如最大值为10,则为10阶,如图
在这里插入图片描述
所有节点中,节点【13,16,19】拥有的子节点数目最多,四个子节点(灰色节点),所以可以定义上面的图片为4阶B树,现在懂什么是阶了吧

什么是根节点 ?

  节点【10】即为根节点,特征:根节点拥有的子节点数量的上限和内部节点相同,如果根节点不是树中唯一节点的话,至少有俩个子节点(不然就变成单支了)。在m阶B树中(根节点非树中唯一节点),那么有关系式2<= M <=m,M为子节点数量;包含的元素数量 1<= K <=m-1,K为元素数量。

什么是内部节点 ?

  节点【13,16,19】、节点【3,6】都为内部节点,特征:内部节点是除叶子节点和根节点之外的所有节点,拥有父节点和子节点。假定m阶B树的内部节点的子节点数量为M,则一定要符合(m/2)<= M <=m关系式,包含元素数量M-1;包含的元素数量 (m/2)-1<= K <=m-1,K为元素数量。m/2向上取整。

什么是叶子节点?

  节点【1,2】、节点【11,12】等最后一层都为叶子节点,叶子节点对元素的数量有相同的限制,但是没有子节点,也没有指向子节点的指针。特征:在m阶B树中叶子节点的元素符合(m/2)-1<= K <=m-1。

B树的插入
  针对m阶高度h的B树,插入一个元素时,首先在B树中是否存在,如果不存在,即在叶子结点处结束,然后在叶子结点中插入该新的元素。

  ①若该节点元素个数小于m-1,直接插入;
  ②若该节点元素个数等于m-1,引起节点分裂;以该节点中间元素为分界,取中间元素(偶数个数,中间两个随机选取)插入到父节点中;
  ③重复上面动作,直到所有节点符合B树的规则;最坏的情况一直分裂到根节点,生成新的根节点,高度增加1;

B树的删除
  首先查找B树中需删除的元素,如果该元素在B树中存在,则将该元素在其结点中进行删除;删除该元素后,首先判断该元素是否有左右孩子结点,如果有,则上移孩子结点中的某相近元素(“左孩子最右边的节点”或“右孩子最左边的节点”)到父节点中,然后是移动之后的情况;如果没有,直接删除。

  ①某结点中元素数目小于(m/2)-1,(m/2)向上取整,则需要看其某相邻兄弟结点是否丰满;
  ②如果丰满(结点中元素个数大于(m/2)-1),则向父节点借一个元素来满足条件;
  ③如果其相邻兄弟都不丰满,即其结点数目等于(m/2)-1,则该结点与其相邻的某一兄弟结点进行“合并”成一个结点;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值