B树的介绍
B-tree树即B树,B即Balanced,平衡的意思。有人把B-tree翻译成B-树,容易让人
产生误解。会以为B-树是一种树,而B树又是另一种树。实际上,B-tree就是指的B树。
B树的说明:
1)
B
树的阶:
节
点的最多子节点个数。
比
如
2-3
树的阶是
3
,
2-3-4
树的阶是
4
2)
B-
树的搜索,从根结点开始,对结点内的关键字(有序)序列进行二分查找,如
果命
中则结束,否则进入查询关键字所属范围的儿子结点;重复,直到所对应的儿子指针
为空
,或已经是叶子结
点
●
3)
关键字集合分布在整颗树
中
,
即叶子节点和非叶子节点都存放数据
.
4)
搜索有可能在非叶子结点结
束
5)
其搜索性能等价于在关键字全集内做一次二分查
找
B+ 树的介绍
B+树是B树的变体,也是一种多路搜索树
B+树的说明:
1)
B+
树的
搜索与
B
树
也基本相同,区别是
B+
树只有达到叶子结点才命中(
B
树
可以
在非
叶子结点命中),其性能也等价于在关键字全集做一次二分查
找
2)
所
有
关键字都出现在叶子结点的链表中
(即
数
据只能在叶子节点
【
也叫稠
密索
引
】
),
且链表中的关键
字
(
数据
)
恰好是
有序
的。
3)
不可能在非叶子结点命
中
4)
非
叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存
储(
关键字)数据的数据
层
5)
更适合文件索引系
统
6)
B
树和
B+
树各有自己的应用场景,不能说
B+
树
完全比
B
树好,反之亦然
.
B
*树的介绍
B*树是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针。
B*树的说明:
1)
B
*
树定义了非叶子结点关键字个数至少为
(2/3)*M
,即块的最低使用率为
2/3
,而
B+
树的块的最低使用率为
B
+
树的
1/2
。
●
2)
从第
1
个特点我们可以看出,
B
*
树分配新结点的概率比
B+
树要低,空间使用率更高
●