数据基础教程14_第1页
数据基础教程14_第2页
数据基础教程14_第3页
数据基础教程14_第4页
数据基础教程14_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9.3.4B树一种外查找的数据组织结构B树中所有结点的最大子树个数称为B树的阶,通常用m表示,从查找效率考虑,要求m≥3。一棵m阶B树或者是一棵空树,或者是满足下列要求的m叉树:

(1)树中每个内部结点至多有m棵子树(即至多含有m-1个关键字,设Max=m-1)。

(2)若根结点不是叶子结点,则根结点至少有两棵子树。

(3)除根结点外,所有内部结点至少有

m/2

棵子树(即至少含有

m/2

-1个关键字,设Min=

m/2

-1)。1/28(4)每个结点的结构如下:np0key1p1key2p2…keynpn(5)所有的外部结点在同一层,且不含任何信息。

m/2

-1≤n≤m-1,并且满足有序性2/28一棵3阶B树10361318124511121417192079根结点外部结点层叶子结点层高度h=3m=3除根外,所有内部结点至少有

m/2

=2个孩子,至多有m=3个孩子(这类结点的关键字个数为1~2个)根结点有两个孩子结点所有外部结点都在同一层上3/281.B树的查找

在B树中查找给定关键字的方法类似于二叉排序树上的查找,不同的是在每个结点上确定向下查找的路径不一定是二路的,而是n+1路的(n为该结点的关键字个数)。4/2810361318124511121417192079根结点外部结点层叶子结点层高度h=3分析查找性能假设m阶B树的高度为h(h中不含外部结点层,外部结点层看成是第h+1层),访问的结点个数不超过O(h)。那么,含有N个关键字的m阶B树可能达到的最大高度h是多少呢?显然在关键字个数固定时,每一层关键字个数越少树的高度越高。第1层最少结点数为1。第2层最少结点数为2。第3层最少结点数为2

m/2

。第4层最少结点数为2

m/2

2个。

…第h层最少结点数为2

m/2

h-2个。第h+1层(外部结点层)最少结点数为2

m/2

h-1个。m阶B树中共含有N个关键字,则外部结点必为N+1个,即N+1≥2

m/2

h-1,有h-1≤log

m/2

(N+1)/2,则h≤log

m/2

(N+1)/2+1=O(logmN)。

m/2

-1≤n≤m-1,

m/2

≤结点子树数≤m5/282.B树的插入

(1)利用前述的查找过程找到关键字k的插入结点p(注意m阶B树的插入结点一定是某个叶子结点)。

(2)判断结点p是否还有空位置,即其关键字个数n是否满足n<Max(Max=m-1):

①若n<Max成立,说明结点p有空位置,直接把关键字k有序插入到结点p中(插入关键字k后结点p的所有关键字仍有序)。6/28

②若n=Max,说明结点p没有空位置,需要把结点p分裂成两个。pk1

ks

kn

中间关键字k1

ks-1

ks

…ks+1

kn分裂

如果此时双亲结点的关键字个数也超过Max,则要再分裂,再往上插,直至这个过程传递到根结点为止。如果根结点也需要分裂,则整个m阶B树增高一层。7/28

【例9.16】关键字序列为(1,2,6,7,11,4,8,13,10,5,17,9,16,20,3,12,14,18,19,15),创建一棵5阶B树。这里m=5,结点中最大关键字个数Max=m-1=4。112,6,712678/28111267111271164,8,131247811136101247810111361246107811139/285,17,9,1612456107891113161720124561078911131617201245610167891113172010/28312345610167891113172036101678911131720124511/2812,14,18,193610167891112131417181920124512/281536101678911121314151718192012453610131678917181920124511121415131636789171819201245111214151013/283.B树的删除

(1)利用前述的查找算法找出关键字k所在的结点p。

(2)实施关键字k的删除操作。结点p分为两种情况,情况一是结点p是叶子结点,情况二是结点p不是叶子结点。

转换过程:当结点p不是叶子结点时,假设结点p中关键字key[i]=k(1≤i≤n),以p[i](或p[i-1])所指右子树(或左子树)中的最小关键字min(或最大关键字max)来替代被删关键字key[i](值替代),再删除关键字min(或max)。情况二转换为情况114/28

现在考虑情况1,即在m阶B树的某个叶子结点q中删除关键字k'=min(或者k'=max),根据结点q中关键字个数n又分为以下三种子情况:

①若n>Min(=

m/2

),说明删除关键字k'后该结点仍满足B树的定义,则可直接从结点q中删除关键字k'。15/28

②若n=Min,说明删除关键字k'后该结点不满足B树的定义,此时若结点q的左(或右)兄弟可以借借一个关键字。q左兄弟…

k"

kt

………k"

…kt…knqk'

kn双亲结点借关键字16/28

③假如结点q的关键字个数等于Min,并且该结点的左和右兄弟结点都不能借

合并。左兄弟…

kt

kt+1…qk'

kn双亲结点合并后结点…

kt+1…双亲结点合并17/28

【例9.17】对于例9.16创建的最终5阶B树,给出删除8、16、15和4关键字的过程。131636789171819201245111214151018/28删除8789131636171819201245111214151079这里m=5,每个结点的关键字个数在2~4之间。19/28删除16131617181920361245111214151079每个结点的关键字个数在2~4之间。181920131720/28删除151317181920361245111214151079每个结点的关键字个数在2~4之间。19201318141721/28删除41318361245111214171079每个结点的关键字个数在2~4之间。1920合并131861235111214171079192022/281318612351112141710791920610131812351112141779192023/28在索引文件组织中,经常使用B树的一些变形,其中B+树是一种应用广泛的变形。一棵m阶B+树满足下列条件:

(1)每个分支结点至多有m棵子树。(2)根结点或者没有子树,或者至少有两棵子树。(3)除根结点外,其他每个分支结点至少有

m/2

棵子树。(4)有n棵子树的结点有n个关键字。9.3.5B+树24/28

(5)所有叶子结点包含全部关键字及指向相应数据记录的指针,而且叶子结点按关键字大小顺序链接(每个叶子结点的指针指向数据文件中的记录)。

(6)所有分支结点(可看成是索引)中仅包含各子树中最大关键字。sqtroot3152152231475210121518192022233031334547485052叶子结点层根结点数据记录层一棵4阶的B+树25/28m阶的B+树和m阶的B树的主要的差异

(1)在B+树中,具有n个关键字的结点对应n棵子树,即每个关键字对应一棵子树,而在B树中,具有n个关键字的结点对应n+1棵子树。

(2)在B+树中,每个结点(除根结点外)中的关键字个数n的取值范围是

m/2

≤n≤m,根结点n的取值范围是2≤n≤m。sqtroot3152152231475210121518192022233031334547485052叶子结点层根结点数据记录层一棵4阶的B+树26/28

(3)B+树中的叶子结点层包含全部关键字,即其他非叶子结点中的关键字包含在叶子结点中,而在B树中,所有关键字是不重复的。

(4)B+树中所有非叶子结点仅起到索引的作用,即这些结点中的每个索引项只含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录。而在B树中,每个结点的关键字都含对应的记录。sqtroot3152152231475210121518192022233031334547485052叶子结点层根结点数据记录层一棵4阶的B+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论