1.B树
B树,也叫B-树,它是一棵多路平衡搜索树。
一个m阶的B树满足以下条件:
1. 每个节点最多有m个子节点。(m>=2,m=2时是二叉搜索树)
2. 根节点至少有2个子节点,至少1个关键字.(除了一棵树只有根节点外)
3. 关键字集合分布在整颗数中,任何一个关键字出现且只出现在一个节点中
4. 所有叶子节点在同一层。(叶子节点不包含任何信息,可看成额外的节点)
5. 有k个子节点的分支节点有k-1的关键字,按递增顺序排列。
6.其搜索性能等价于在关键字全集内做一次二分查找
B-树的搜索,从根结点开始,对结点内的关键字(有序)序列进行二分查找,如果
命中则结束,否则进入查询关键字所属范围的儿子结点;重复,直到所对应的儿子指针为
空,或已经是叶子结点;(如果比关键字小则往关键字左边地址进行继续查找,比关键字大则往关键字右边进行查找)
2.B+树
B+树是B-树的变体,也是一种多路搜索树:
1.其定义基本与B-树同,除了:
2.非叶子结点的子树指针与关键字个数相同;
3.非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树
(B-树是开区间);
5.为所有叶子结点增加一个链指针;
6.所有关键字都在叶子结点出现;
3.B+树相比于B树的优势
1.B+树的中间节点不保存数据,所以磁盘页能容纳更多的节点元素,能更“矮,胖”;
2.B+树查询必须查找到叶子节点,B树只要匹配到即可,不用管元素位置,因此B+树更稳定(并不慢)
3.对于范围查找来说,B+树只需遍历叶子结点链表即可,B树却需要重复地中序遍历