- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第7章查找
;定义;1.B-树的定义;在m阶的B-树上,每个非终端结点可能含有:
n个关键字Ki(1≤i≤n)nm
n个指向记录的指针Di(1≤i≤n)
n+1个指向子树的指针Ai(0≤i≤n);非叶结点中的多个关键字均自小至大有序排列,即:K1K2…Kn;
Ai-1所指子树上所有关键字均小于Ki;
Ai所指子树上所有关键字均大于Ki;;平衡树的特性;从根结点出发,沿指针搜索结点和在
结点内进行顺序(或折半)查找两个过程
交叉进行。;显然,关键字插入的位置必定在最下
层的非叶结点。;50;2)插入后,该结点的关键字个数n=m,
则需进行“结点分裂”,令s=?m/2?,
在原结点中保留
(A0,K1,……,Ks-1,As-1);
建新结点
(As,Ks+1,……,Kn,An);
将(Ks,p)插入双亲结点;;例如:下列3阶B-树;50;练习;和插入的考虑相反,首先必须找到待删关键字所在结点,并且要求删除之后,结点中关键字的个数不能小于?m/2?-1,否则,要从其左(或右)兄弟结点“借调”关键字,若其左和右兄弟结点均无关键字可借(结点中只有最少量的关键字),则必须进行结点的“合并”。;①假如被删结点的关键字个数大于?m/2?-1:直接删去该关键字。
;②假如被删结点的关键字个数等于?m/2?-1,此时若该结点的左(或右)兄弟结点中关键字个数大于?m/2?-1:
则借兄弟结点关键字;
把该兄弟结点中最大(或最小)的关键字上移到双亲结点中,同时把双亲结点中大于(或小于)上移关键字的关键字下移到要删除关键字的结点中。
;3;③假如被删结点的关键字个数等于?m/2?-1,并且该结点的兄弟结点(如果存在的话)中关键字个数均等于?m/2?-1:
和兄弟结点合并:
要删除关键字的结点与其左(或右)兄弟结点以及双亲结点中分割二者的关键字合并成一个结点。
如果因此使双亲结点中关键字个数小于?m/2?-1,则对此双亲结点做同样处理,以致于可能直到对根结点做这样的处理而使整个树减少一层。
;3;已知一棵3阶B-树,如下图所示。删除关键字78得到一棵新B-树,其最后一层中最右结点中的关键字是()。;试从空树开始,画出按以下次序向2-3树中插入数据的建树过程:20,30,50,52,60,68,70。如果再删除50和68,画出每一步执行后2-3树的状态。;B+树;※在B+树上,既可以进行缩小范围的查找,也可以进行顺序查找;
※在进行缩小范围的查找时,不管成功与否,都必须查到叶子结点才能结束;
※若在结点内查找时,给定值≤Ki,则应继续在Ai所指子树中进行查找;类似于B_树进行,即必要时,也需要进行结点的“分裂”或“合并”。;总结
文档评论(0)