编程内功修炼之数据结构—BTree(一)
BTree,和二叉查找树和红黑树中一样,与关键字相联系的数据作为关键字存放在同一节点上。
一颗BTree树具有如下的特性:(根为root[T])
1)每个节点x有以下域:
(a)n[x],当前存储在节点x中的关键数总数;
(b)n[x]个关键字本身以升序存放,因此key1<=key2<=keyi …<=keyn;
(c)leaf[x],是一个布尔值,如果x是叶子的话,则为TRUE,如果是内节点,则为FALSE;
2)每个内节点包含n[x]+1个子女对象的地址,叶节点没有子女;
子女地址表示为:c1[x],c2[x],c3[x]……
3)每个叶节点具有相同的高度,即h
4)每个节点包含的关键字范围上界(非根节点2*t-1),下界(非根节点t-1),t>=2,t称为BTree最小度数;
5)每个内节点可以包含子女数为 t~2t;
BTree高度
树根节点关键字至少为1;
每个内节点关键字至少为t-1;
如下图所示:
得出结论:
所以BTree的算法复杂度为:O(th) = O(t*logn)