5.1 B树
B树就是二叉搜索树。具有的特点如下:
(1)所有非叶子结点最多拥有两个儿子;
(2)所有结点存储一个关键字;
(3)非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树。
5.2 B-树
B-树的定义:
(1) 任意非叶子结点的儿子的个数最多为M个;
(2) 根结点的儿子的个数为[2,M]个;
(3) 除根的非叶子结点的儿子数为[M/2,M];
(4) 每个结点的关键字为(M/2-1)上取整~[M-1];
(5) 非叶子结点的关键字的个数=指向儿子的指针数-1;
(6) 结点内的关键字是有序的;
(7) 每个指针指向的关键字不同的区域;
(8) 所有叶子结点位于同一层。
B-树的特点:
(1) 关键字分布在整棵树上;
(2) 任何一个关键字出现且出现在一个结点中;
(3) 搜索有可能在非叶子结点结束;
(4) 搜索性能等价于在关键字上做一次二分查找;
(5) 自动层次控制。
5.3 B+树
B+树的定义:
(1) 其定义基本与B-树相同,除了:
(2) 非叶子结点的孩子个数等于关键字的个数;
(3) 非叶子结点的指针p[i],指向[k[i],k[i+1]]的子树;
(4) 叶子指向一个链指针;
(5) 所有关键字都在叶子出现。
B+树的特点:
(1) 关键字都出现在叶子结点的链表中,且关键字恰好有序;
(2) 不可能在非叶子结点命中;
(3) 非叶子结点相当于索引,叶子结点相当于存储数据的数据层;
更适合文件索引系统。