动态查找表--B-树

查找的文件较大,且存放在磁盘等直接存取设备中时,为了减少查找过程中对磁盘的读写次数,提高查找效率,基于直接存取设备的读写操作以"页"为单位的特征。
     1972年R.Bayer和E.M.McCreight提出了一种称之为B-树的多路平衡查找树。它适合在磁盘等直接存取设备上组织动态的查找表。

B-树的定义

1、B-树的定义

     一棵m(m≥3)阶的B-树是满足如下性质的m叉树:
(1)每个结点至少包含下列数据域:
    (j,P0,Kl,P1,K2,…,Ki,Pi)
  其中:
    j为关键字总数
    Ki(1≤i≤j)是关键字,关键字序列递增有序:K1 <K2<…<Ki
    Pi(0≤i≤j)是孩子指针。对于叶结点,每个Pi为空指针。
  注意:
     ①实用中为节省空间,叶结点中可省去指针域Pi,但必须在每个结点中增加一个标志域leaf,其值为真时表示叶结点,否则为内部结点。
  ②在每个内部结点中,假设用keys(Pi)来表示子树Pi中的所有关键字,则有:
       keys(P0)<K1<keys(P1)<K2<…<Ki<keys(Pi)
即关键字是分界点,任一关键字Ki左边子树中的所有关键字均小于Ki,右边子树中的所有关键字均大于Ki
(2)所有叶子是在同一层上,叶子的层数为树的高度h。
(3)每个非根结点中所包含的关键字个数j满足:
                        
 

     即每个非根结点至少应有 个关键字,至多有m-1个关键字。
     因为每个内部结点的度数正好是关键字总数加1,故每个非根的内部结点至少有子树,至多有m棵子树。
(4)若树非空,则根至少有1个关键字,故若根不是叶子,则它至少有2棵子树。根至多有m-1个关键字,故至多有m棵子树。

posted @ 2012-02-05 13:46  nba76ers  阅读(560)  评论(1)    收藏  举报