b树,多路平衡查找树
一个M阶的b树具有如下几个特征:
任意非叶节点最多只有M个儿子,且M>2
根节点的儿子个数为[2, M]
除根节点以外的非叶节点的儿子数为[M/2,M] 向上取整
非叶节点的关键是个数= 儿子数-1
所有叶子节点位于同一层
k个关键字把节点拆成k+1段,分别指向k+1个儿子,同时满足查找树的大小关系
b+树
- 有n棵子树的非叶子结点中含有n个关键字(b树是n-1个),这些关键字不保存数据,只用来索引,所有数据都保存在叶子节点(b树是每个关键字都保存数据)。
- 所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
- 所有的非叶子结点可以看成是索引部分,结点中仅含其子树中的最大(或最小)关键字。
- 通常在b+树上有两个头指针,一个指向根结点,一个指向关键字最小的叶子结点。
- 同一个数字会在不同节点中重复出现,根节点的最大元素就是b+树的最大元素。
区别
b树每个节点代表一个数据,数据存放在节点上,每个数据都是唯一的
b+树非叶子节点仅代表索引,实际数据存储在叶子节点上,且叶子节点数据通过指针相连,支持范围查询,相比于b树更加矮胖。