Python 数据结构计算机学习

B-Tree、B+Tree、B*Tree

2018-11-06  本文已影响277人  fanlv

B-Tree、B+Tree、B*Tree

一、B-Tree

1.1 什么是B-Tree

1970年,R.Bayer和E.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B树,其定义如下

M = 3

b-tree.jpg

1.2 B-Tree 查找

假设我们要查找的数据是 5

b-tree-search.png

二、B+Tree

2.1 什么是B+Tree

B+ 树是一种树数据结构,是一个n叉树,每个节点通常有多个孩子,一棵B+树包含根节点、内部节点和叶子节点。根节点可能是一个叶子节点,也可能是一个包含两个或两个以上孩子节点的节点。

一个m阶的B+树具有如下几个特征:

b+tree-data.png 5.jpg

2.2 B+Tree特点

B+的特性:

B-树中的卫星数据(Satellite Information):

b-tree-data.png

B+树中的卫星数据(Satellite Information):

b+tree-data.png

数据量相同的情况下,B+树的结构比B-树更加“矮胖”,因此查询时候IO次数也更少。

2.3 B+Tree的优势

三、B*Tree

3.1 什么是B*Tree

B*Tree是B+Tree的变体,在B+Tree的非根和非叶子结点再增加指向兄弟的指针;

B*Tree定义了非叶子结点关键字个数至少为(2/3) * M,即块的最低使用率为2/3

3.2 B+Tree和B*Tree区别

所以,B*树分配新结点的概率比B+树要低,空间使用率更高;

6.jpg

四、小结

参考资料

https://www.sohu.com/a/156886901_479559

https://www.cnblogs.com/vincently/p/4526560.html

https://blog.csdn.net/andyzhaojianhui/article/details/76988560

上一篇下一篇

猜你喜欢

热点阅读