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+树也更适合与索引系统

原文地址:https://www.cnblogs.com/lmhyhblog/p/10044202.html