B树

B树是为磁盘或其他直接存取存储设备而设计的一种平衡查找树,许多数据库系统使用B树或B树的变形来存储信息

B树与红黑树的不同在于,B树的结点可以有许多子女,从几个到几千个

 

 

为什么针对磁盘设计的数据结构不同于针对随机存取的主存而设计的数据结构:

  磁盘的读写速度慢,数据量大不能完全加载到内存中

 

一颗B树T是具有如下性质的有根树(根为root[T]):

  1 每个节点X有以下域:

    a n[x],当前存储在结点x中的关键字数

    b n[x]个关键字本身,以非降序存放,因此key1[x]<=key2[x]<=····<=key(x)[x]

    c leaf[x]是一个布尔值,如果x为叶子的话,则它为TRUE,如果x为一个内节点,则为FALSE

  2 每个内节点x还包含n[x]+1个指向其子女的指针,叶结点没有子女,故它们的域没定义

  3 各关键字keyi[x]对存储在各子树中的关键字范围加以分隔

  4 每个页结点具有相同的深度,即树的高度h

  5 每一个结点能包含的关键字数有一个上界和下界,这些界可用一个称作B树的最小度数的固定整数t>=2来表示

    a 每个非根的结点必须至少有t-1个关键字,每个非根的内结点至少有t个子女,如果树是非空的,则根结点至少包含一个关键字

    b每个结点可包含至多2t-1个关键字,所以一个内结点至多可有2t个子女,我们说一个结点是满的,那么它恰好有2t-1个关键字

t=2时的B树是最简单的,这是每个内结点有2个,3个或4个子女,即一颗2-3-4树

 

 

B树的高度:

  B树上大部分操作所需的磁盘存取次数与B树的高度成正比,

  对根进行分裂是增加B树高度的唯一途径,B树的高度增加是在顶部而不是底部发生

posted @ 2013-11-26 08:06  褐色键盘  阅读(165)  评论(0)    收藏  举报