从零开始学数据结构系列之第五章《B树了解以及定义》


B树

下面的视频可以看一下,有助于理解下B树
七海讲数据结构-平衡树&B树【七海Nana7mi】

B树的定义

B-tree 即 B树,B 即 Balanced,平衡的意思。

B树 是一颗多路平衡查找树。

​   B树是所有结点的平衡因子均为0的多路平衡查找树。

​   B树是一种自平衡的树,一个节点可以拥有2个以上的子节点,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。

​   它与自平衡二叉查找树不同,B树的每个节点可以包含大量的关键字信息和分支,便于降低自己的高度,让自己更胖更矮,更加适用于读写相对大的数据块的存储系统,例如磁盘,可以减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。

​   **在B树中,内部(非叶子)节点可以拥有可变数量的子节点(数量范围预先定义好)。当数据被插入或从一个节点中移除,它的子节点数量发生变化。为了维持在预先设定的数量范围内,内部节点可能会被合并或者分离。**因为子节点数量有一定的允许范围,所以B树不需要像其他自平衡查找树那样频繁地重新保持平衡,在这点名批评红黑树,但是由于节点没有被完全填充,可能浪费了一些空间。

B树的优势如下:

​   使关键字保持排序顺序以进行顺序遍历
​   使用分层索引来最大程度地减少磁盘读取次数
​   使用部分完整的块来加快插入和删除
​   使用递归算法使索引保持平衡
总之,B树操作不是很复杂,用途很广泛,正道的光,照在了数据结构的路上
在这里插入图片描述

一颗m阶的B树定义如下:

  • 每一个节点最多有 m 个子节点
  • 每一个非叶子节点(除根节点)最少有 ⌈m/2⌉ (向上取整)个子节点
  • 如果根节点不是叶子节点,那么它至少有两个子节点
  • 有 k 个子节点的非叶子节点拥有 k − 1 个键
  • 所有的叶子节点都在同一层,叶子节点不包含任何关键字信息
  • 除根节点外的所有非叶结点至少有棵子树,即至少含有个关键字

那怎么理解上面这五个的定义呢?

  首先这个m是什么意思呢,那这个 m 的话就是我们B树的阶数,例如我 m 等于五的时候,我这个就叫五阶 B 树。如果 m 等于三的话,那它就叫三阶 B 树。那有些地方的话可能也不叫阶而叫度,那具体叫法的话还是因教程而异,我们这里的话统一叫阶

  1. 每一个节点最多有 m 个子节点

    1. m>=2,m=2时是二叉搜索树,那我们的二叉搜索数是不是相当于我们二阶 B树,每一个它的 m 是等于二,那我们它最多是有 m 个子节点,也就是2个子节点
  2. 每一个非叶子节点(除根节点)最少有 ⌈m/2⌉ (向上取整)个子节点

    1. 那我们向上取整是什么意思呢?
      1. 例如我 n 等于五,那么五除以二的话是等于2.5,我们向上取整的话,那它这个最后的值是取3,那这个的话就是向上取整的意思
    2. 那我们对非叶子节点要怎么理解&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值