B树(B-trees)

前言:

在我们学习了平衡二叉查找树、2-3树、红黑树等等之后,我们今天来学习新的一种树——B树,它的效率较平衡二叉查找树还要高,下面就来详细看看这种数据机构。

B树:

M阶B树性质:

1. 根节点至少有两个子节点。

2. 其他节点至少有M / 2个子节点。

3. 每个节点最少2个key,最多M – 1个key。

4. 位于父节点两个key之间的子节点的值位于父节点两个key对应的value之间。

如图所示是一个M为6的B数:

《B树(B-trees)》

B树的一些基本操作:

查找:

1. 将所要找的值与根节点的值进行比较,若小于,则往左边的子节点找,否则往右节点找(二分法规则,左小右大,左边放小于当前节点值的子节点、右边放大于当前节点值的子节点)。

2. 如果在几点中找到,则直接返回关键字和指针信息(如果树结构里面没有包含所要查找的节点则返回null);

《B树(B-trees)》

 

插入:

针对一棵高度为h的m阶B树,插入一个元素时,首先在B树中是否存在,如果不存在,一般在叶子结点中插入该新的元素,此时分3种情况:

1. 如果该结点的key数小于M-1,则直接插入在该结点的左边或右边;

2. 如果空间满了以致没有足够的空间去添加新的元素,即该结点的关键字数已经有了M-1个,则需要将该结点进行“分裂”,将一半量的关键字元素分裂到新的其相邻右结点中,中间关键字元素上移到父结点中,而且当结点中关键元素向右移动了,相关的指针也需要向右移。

3. 此外,如果在上述中间关键字上移到父结点的过程中,导致根结点空间满了,那么根结点也要进行分裂操作,这样原来的根结点中的中间关键字元素向上移动到新的根结点中,因此导致树的高度增加一层。

如图:

《B树(B-trees)》

(以上图片均来自普林斯顿算法课的ppt,版权归其所有)

总结:

计算机科学中,B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。B树,概括来说是一个节点可以拥有多于2个子节点的二叉查找树。与自平衡二叉查找树不同,B-树为系统最优化大块数据的读和写操作。B-tree算法减少定位记录时所经历的中间过程,从而加快存取速度。

主要应用:数据库文件系统

 

 

最后强烈推荐Coursera上普林斯顿大学的算法课点击打开链接

 

 

以上内容纯属个人学习总结,不代表任何团体或单位。若有理解不到之处请见谅!

 

    原文作者:B树
    原文地址: https://blog.csdn.net/qq_39747794/article/details/82227679
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞