B树、B+树
B树(也叫做B-树或B_树(一直以为B-是B树的变形))
一颗M阶B树,是一颗平衡的M路搜索树
1.若根不是叶子结点至少有两个子结点,最多有M个子结点
2.每个非根非叶子结点的子结点数量为[ceil(M/2),M] ,因此关键字的数量为[ceil(M/2)-1,M-1]
3.每个结点的关键字数为子结点数-1,结点的子结点和关键字的值是升序,且关键字恰好是每个孩子包含的关键字的值域的划分(其实就是把关键字依次插入,整体还是递增的)
4.所有叶子结点位于同一层
5.关键字分布在整个树中,一个关键字只出现在一个节点中,因此搜索可能在非叶子结点结束
6.其搜索性能等价于在全集中做一次二分查找
B树为系统优化大块数据的读写操作,普遍运用于数据库和文件系统
B+树
与B树不同之处
1.非叶子结点的子结点数和关键字数相同(对于子树指针P[i],指向关键字是[K[i],K[i+1])的子树)
2.所有关键字都在子节点出现
3.每一个叶子结点都加一个链指针(因此对于遍历整棵树,只需要在最左边节点,通过该指针依次遍历即可)
因此 B+树的非叶子结点相当于叶子结点的索引,而叶子结点相当于数据层,B+树也更适合与索引系统