数据结构之BTree、B+Tree的含义及区别

1.引言

前面学习索引时,了解到MySQL索引的数据类型有B+Tree索引和哈希索引,本文将详细介绍一下BTree和B+Tree的含义和他们的区别。

2.BTree

2.1 概念

B树是一种自平衡树数据结构,它维护有序数据并允许以对数时间进行搜索,顺序访问,插入和删除。B树是二叉搜索树的一般化,因为节点可以有两个以上的子节点。与其他自平衡二进制搜索树不同,B树非常适合读取和写入相对较大的数据块(如光盘)的存储系统。它通常用于数据库和文件系统。

定义:

B树是一种平衡的多分树,通常我们说m阶的B树,它必须满足如下条件:

   1. 每个节点最多只有m个子节点。

   2. 每个非叶子节点(除了根)具有至少⌈ m/2⌉子节点。

   3. 如果根不是叶节点,则根至少有两个子节点。

   4. 具有k个子节点的非叶节点包含k -1个键。

   5.所有叶子都出现在同一水平,没有任何信息(高度一致)。

什么是阶?
在这里插入图片描述

节点【13,16,19】拥有的子节点数目最多,有四个子节点(粉色节点),所以可以定义上面的图片为4阶B树。

什么是根节点?

节点【10】即为根节点。包含子节点数关系式2<= M <=m,M为子节点数量;包含的元素数量 1<= K <=m-1,K为元素数量。

什么是内部节点?

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

什么是叶子节点?

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

2.2 操作

举例:以5阶数为列

2.2.1 插入操作

规则:

若该节点元素个数小于m-1,直接插入;

若该节点元素个数等于m-1,引起节点分裂;以该节点中间元素为分界,取中间元素(偶数个数,中间两个随机选取)插入到父节点中;

重复上面动作,直到所有节点符合B树的规则;最坏的情况一直分裂到根节点,生成新的根节点,高度增加1;

关键点:

2<=根节点子节点个数<=5

3<=内节点子节点个数<=5

1<=根节点元素个数<=4

2<=非根节点元素个数<=4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值