B树-B+树
B树之2-3树的特点
- 2-3树是B树的一种,这里就用2-3树作为案例
- 2-3树的所有叶子节点都在同一层
- 有两个结点的叫做二结点,有三个结点的叫做三结点
- 二节点要么有两个子节点,要么没有子节点
- 三节点要么有三个子节点,要么没有子节点
- B树的搜索,从根节点开始,对节点内的关键字进行二分查找,如果找到就结束,否则进入查询关键字所属范围的子节点,重复以上操作,直到叶子节点
- 关键字集合分布在整棵树中,即叶子节点和非叶子节点都存放着数据
- 搜索有可能在非叶子节点就结束
- 搜索性能相当于在全集内做一次二分查找
案例
将数列{16, 24, 12, 32, 14, 26, 34, 10, 8, 28, 38, 20}构建成2-3树,并保证数据插入的大小顺序
B+树
- B+树的搜索方式与B树基本相同,单数B+树只有搜索到叶子节点才会结束
- 所有关键字都出现在叶子节点的链表中,并且链表的关键字恰好是有序的
- 不可能在非叶子节点找到
- 非叶子节点相当于是叶子节点索引(稀疏索引),叶子节点相当于存储数据的数据层
- B+树适合做文件索引系统和数据库
- B树和B+树各有自己的应用场景,不能说B+树完全比B树好,反之亦然
B*树
- B*树定义了非叶子节点关键字个数至少(2/3)*M,即块的最低使用率为2/3,而B+树的块的最低使用率为B+树的1/2
- 从第1个特点我们可以看出,B*树分配新节点的概率比B+树要低,空间使用率更高