第09章检索(免费阅读).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 检索 9.1 检索的基本概念 9.2 线性表的检索 9.2.2二分法检索 9.2.3分块检索 9.3 二叉排序树 9.4丰满树和平衡树 9.4.1丰满树 9.4.2平衡二叉排序树 9.5最佳二叉排序树和Huffman树 9.5.1扩充二叉树 9.5.2最佳二叉排序树 9.5.3 Huffman树 9.6 B-树 9.6.2 B-树的基本操作 9.7散列表检索 9.7.2散列函数的构造 9.7.3冲突处理 (4)除根结点之外所有非终端结点至少有?m/2?棵子树,也即每个非根结点至少应有?m/2?-1个关键字; (5)所有的叶子结点都出现在同一层上,并且不带信息(可以看作是外部结点或查找失败的结点,实际上这些结点不存在,指向这些结点的指针为空)。 2 50 80 root 1^60^ 1^53^ 1^43^ 1^22^ 1^97^ 1^88^ 1^75^ 2 20 40 2 55 70 1 90 2^10^19^ 例:一棵3阶的B-树 一、基于B-树的查找运算 2 50 80 root 1^60^ 1^53^ 1^43^ 1^22^ 1^97^ 1^88^ 1^75^ 2 20 40 2 55 70 1 90 2^10^19^ 二、基于B-树的插入运算 在B-树中插入关键字k的方法是:首先在树中查找k,若找到则直接返回(假设不处理相同关键字的插入);否则查找操作必失败于某个叶子结点上,利用函数btree_search()的返回值*p及*pos可以确定关键字k的插入位置,即将k插入到p所指的叶结点的第pos个位置上。若该叶结点原来是非满(结点中原有的关键字总数小于m-1)的,则插入k并不会破坏B-树的性质,故插入k后即完成了插入操作,例如,在图9.17(a)所示的5阶B-树的某结点(假设为p结点)中插入新的关键字150时,可直接得到图9.17(b)所示的结果。 2 100 190 3 100 150 190 图9.17在关键字个数不满的结点中插入关键字 若p所指示的叶结点原为满,则k插入后keynum=m,破坏了B-树的性质(1),故须调整使其维持B-树的性质不变。调整的方法是将违反性质(1)的结点以中间位置的关键字key[?m/2?]为划分点,将该结点(即p) (m,p0,k1,p1,…,km,pm) 分裂为两个结点,左边结点为(?m/2?-1,p0,k1,…k?m/2?-1,p?m/2?-1),右边结点为(m-?m/2?,p?m/2?,k?m/2?+1,…,km,pm),同时把中间关键字k?m/2?插入到双亲结点中。于是双亲结点中指向被插入结点的指针pre改成pre、k?m/2?、pre’三部分。指针pre指向分裂后的左边结点,指针pre’指向分裂后的右边结点。由于将k?m/2?插入双亲时,双亲结点亦可能原本为满,若如此,则需对双亲做分裂操作。分裂过程的例子如图9.18所示。 2 … 80 220… 4 90 120 140 160 p 3 … 80 120 220 … 2 90 100 2 140 160 pre pre pre’ k?m/2? 插入100以前 插入100以后 如果初始时B-树为空树,通过逐个向B-树中插入新结点,可生成一棵B-树。图9.19说明了一棵5阶B-树的生长过程。 6 8 15 16 6 8 15 16 22 6 8 10 15 16 18 22 32 (a)插入6、8、15、16 (b)插入22 (c)插入10、18、32 6 8 10 15 20 16 18 22 32 6 8 10 12 15 20 16 18 19 22 32 40 50 6 8 10 12 15 20 40 16 18 19 22 32 50 56 (d)插入20 (e)插入12、19、40、50 (f)插入56 6 8 9 15 20 40 16 18 19 22 26 32 36 50 52 55 56 10 12 6 8 9 15 16 18 19 22 26 50 52 55 56 10 12 36 38 20 32 40 (g)插入9、26、36、52、55 (h)插入38 三、基于B-树的删除运算 在B-树上删除一个关键字,首先找到该关键字所在结点及

文档评论(0)

tiangou + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档