一、何为B-Tree?
B-Tree就是我们常说的B树,没有B减树,它是一种多路搜索树(并不是二叉的); B树的特征: 1、根结点至少有两个子女。 2、每个中间节点都包含k-1个元素和k个孩子,其中 ceil(m/2) ≤ k ≤ m 3、每一个叶子节点都包含k-1个元素,其中 ceil(m/2) ≤ k ≤ m 4、所有的叶子结点都位于同一层。 5、每个节点中的元素升序排序,节点当中k-1个元素正好是k个孩子包含的元素的值域划分 6、每个结点的结构为:(n,A0,K1,A1,K2,A2,… ,Kn,An) 其中,Ki(1≤i≤n)为关键字,且Ki<Ki+1(1≤i≤n-1)。 Ai(0≤i≤n)为指向子树根结点的指针。且Ai所指子树所有结点中的关键字均小于Ki+1。 n为结点中关键字的个数,满足ceil(m/2)-1≤n≤m-1。 7、非叶子结点的关键字个数=指向儿子的指针个数-1 简诉: B-tree中,每个结点包含: 1、结点所含关键字的个数; 2、指向父结点的指针; 3、关键字(下图中的数字); 4、指向子结点的指针(下图中含p的); 如图: 图中:数字表示关键字,p表示指针,data表示除关键字外的信息B树的搜索:从根结点开始,对结点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围的儿子结点;重复,直到所对应的儿子指针为空,或已经是叶子结点;即B树的查找过程是一个顺指针查找结点和在结点的关键字中进行查找的交叉进行的过程。