B树 多路查找树,其每一个结点的孩子数可以多于两个,且每一个结点处可以存储多个元素。 B树(B-tree)是一种平衡的多路查找树。结点最大的孩子数目成为B树的阶(order)。 特点: 1.如果根结点不是叶结点,则其至少有两棵子树。 2.每一个非根的分支结点都有 k−1 个元素和 k 个孩子,其中[m/2]≤k≤m。(注: [m/2] 表示不小于 m/2 的最小整数) 3.所有叶子结点都位于同一层次。 4.所有分支结点包含下列信息数据 (n,A0,K1,A1,K2,A2,...,Kn,An) ,其中: Ki 为关键字,且 Ki<Ki+1 ; Ai 为指向子树根结点的指针,且 Ai 所指子树中所有结点的关键字均小于 Ki ,最后一个指针 An 所指子树的关键字大于 Kn 。 n 为关键字的个数,其中[m/2]−1≤n≤m−1。 示例:4阶的B树 对 n 个关键字的m阶B树进行查找时,从根结点到关键字结点的路径上涉及的结点树不超过 log[m2](n+12)+1 B+树 在B树中,每一个元素在该树中只出现一次,有可能在叶子结点上,也可能在分支结点上。在B+树中,出现在分支结点中的元素会被当作他们在该分支结点位置的中序后继者(叶子结点)中,再次列出。另外,每一个叶子结点会保存一个指向后一叶子结点的指针。 示例:灰色关键字即是根结点中的关键字在叶子结点再次列出,并且所有叶子节点都链接在一起。 一棵 m 阶的B+树和m阶的B树的差异在于: 1.有 n 棵子树的结点中包含有n个关键字; 2.所有的叶子结点包含全部关键字的信息,及指向含这些关键字记录的指针,叶子结点本身依关键字的大小自小而大顺序链接; 3.所有分支结点可以看成索引,结点中仅含有其子树中的最大(或最小)关键字。 B+树的结构特别适合带有范围的查找。