数据结构与算法--查找(2).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二叉排序树回顾 创建、插入、删除三种操作 知识延伸 本讲小结 平衡二叉树的创建、插入、删除操作 B树的创建、插入和删除操作 作业:请及时完成第6章树的作业。 在B树上进行查找的过程是一个顺指针查找结点和在结点的关键字中进行查找,交叉进行的过程。 (1)在B树中找结点; (2)在结点中找关键字。 B树的查找 要查找关键字k的记录,首先从根结点开始,若找到则找所对应的记录,否则沿P所指的子树继续查找,其中 P0 K K1 P = Pn K Kn Pi Ki K Ki+1 若直到叶子结点还未找到,则查找失败。 B树的查找 设要插入关键值为k的记录,指向k所在记录的指针为p。 首先找到k应插入的叶子结点,将 k和p插入。然后,判断被插入结点是否满足m叉B树的定义,即插入后结点的分支数是否大于m(结点的关键字数是否大于m-1),若不大于,则插入结束;否则,要把该结点分裂成两个。 分裂方法:申请一个新结点,由指针p’指向,将插入后的结点按照关键字的值大小分成左、中、右三部分,中间只含一项,左边的留在原结点,右边的移入新结点,中间的构成新的插入项,插入到它们的双亲结点中,若双亲结点在插入后也要分裂,则在分裂后再往上插入。 B树的插入 45 24 3 12 37 50 53 90 61 70 95 插入30 37 30 插入85 85 61 85 70 53 90 70 例如: 一棵3阶B树 若被删关键字K所在的结点非树叶,则用K的中序前趋(或后继)K’取代K,然后从叶子中删去K’。 在B树的叶子结点上删除关键字分三种情况讨论。 1、keynumMin,只需直接删除即可。 2、keynum=Min, 且所在结点的左或右兄弟结点keynumMin 3、keynum=Min,且所在结点左右兄弟结点keynum=Min B树的删除 j c f m r a b d e g h i k l n p s t u x 例如:删除5阶B树的h、r、p、d结点。 第1步:h-keynumMin,只需直接删除即可。 g i j c f m r a b d e g i k l n p s t u x 第2步: r-keynum=Min,且r所在结点非叶子结点,s移动到r的位置 m t u x m s 例如:删除5阶B树的h、r、p、d结点。 j c f m s a b d e g i k l n p t u x p-keynum=Min,且p所在结点的右兄弟结点keynumMin,s下移动,t上移 第3步: n s m t u x 例如:删除5阶B树的h、r、p、d结点。 j c f m t a b d e g i k l n s u x d-keynum=Min,且删除后,d所在结点及其左右兄弟结点均无多余结点。 第4步: e 合并 例如:删除5阶B树的h、r、p、d结点。 j f m t a b c e g i k l n s u x 合并 f j m t g i k l n s u x a b c e 例如:删除5阶B树的h、r、p、d结点。 含有8个关键字的3阶B树,最多有几个结点,最少有几个结点?画出其形态。 * * * * * * * * * * * * * * * * 实战 长度为12的表{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec},按此顺序建立一棵3阶B树,画出其形态。 Jan May Nov Aug Mar Oct Apr Dec Feb Jul Jun Sep 实战 B树的查找时间主要花费在搜索结点(访问外存)上,即主要取决于B树的深度 问:含N个关键字的m阶B树的深度H为多少? 先推导每一层所含最少结点数: 第1层 1 第2层 2 第3层 2??m/2? 第4层 2?(?m/2?)2 第H+1层 2?(?m/2?)H-1 性能分析 假设m阶B树的深度为H+1,由于第H+1层为叶子结点,则有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 所以,在含N个关键字的B树上进行一次查找,需访问的结点个数

文档评论(0)

35425 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档