数据结构小记【Python/C++版】——B树篇

一,基础概念

B树也是一种自平衡搜索树,常用于数据库中索引的实现。

B树和AVL树的区别在于:

B树是一种多路平衡查找树,B树的节点可以有两个以上的子节点(AVL树是二叉树,最多只能有两个子节点)。

B树的每个节点可以存储一个以上的数据域(在之前介绍过的树结构中,一个节点只有一个数据域)。由于B树的节点可以存放多条数据,因此B树特别适合应用在块存储的开发场景。

B树和AVL树的相同点在于:

B树的节点分布也是按照左小右大排列,子节点与节点的大小比较结果决定了子节点的位置。

每个节点中,左子树的数据比当前节点都小,右子树的数据比当前节点都大。

关于B树的阶:

M阶B树表示该树每个节点最多有M个子树。若B树中一个节点的子节点数目的最大值为4,则该树为4阶。

M阶B树可以定义为M路搜索树:

节点的最多子节点数为M。

节点的最大数据量为M-1。

所有非叶子节点(根节点除外)应该至少有M/2个子节点。

所有节点(根节点除外)应该至少有M/2-1条数据。

B树的阶数可以帮助我们确定节点在B树中可以容纳的子节点数。如果B树的阶数为3,则子节点的最小数量为2,最大数量为3,节点最多可以存放2个数据。类似地,如果B树的阶数为4,则子节点的最小和最大数量将分别为2和4,节点最多可以存放3个数据。

B树的基本结构:

B树的结构特点:

所有叶子节点都出现在同一水平高度。

B树是一棵扁平树,层数很小,B树的节点不再只存储一条数据。

B树节点内的所有数据必须按键值升序排列。

B树的设计原则就是,将尽可能多的数据放入B树的每个节点中,从而使B树的层数保持在最小值。由于不用遍历很多层节点,与其他平衡树相比,B树的访问速度更快。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员与背包客_CoderZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值