《数据结构A》第07章节.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据结构A》第07章节

数据结构 第7章 动态集和搜索树 7.1 二叉搜索树 7.1.1? 二叉搜索树的定义 定义7.1 设结点由关键字值表征,假定所有结点的关键字值各不相同,二叉搜索树或者是一棵空二叉树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的关键字值均小于根结点的关键字值; (2)若右子树不空,则右子树上所有结点的关键字值均大于根结点的关键字值; (3)左、右子树也分别是二叉搜索树。 ?7.1.2 二叉搜索树的搜索 二叉搜索树搜索递归算法 template class T ResultCode BSTreeT::Search(T x)const { return Search(root,x); } 7.1.3? 二叉搜索树的插入 二叉搜索树的插入 7.1.4? 二叉搜索树的删除 7.1.4? 二叉搜索树的删除 若结点*p有两棵非空子树 需搜索*p的中序遍历次序下的直接后继(或直接前驱)结点,设为*s,将*s的值复制到*p中,称为替代,因为*s最多只有一棵非空子树,这样一来,问题转化为“被删除的结点最多只有一棵非空子树”的情形。 7.1.5? 平均情况时间分析 二叉搜索树搜索的平均时间为O(log2n)。 最坏情况搜索时间为O(n)。 7.2?? 二叉平衡树 7.2.1? 二叉平衡树的定义 7.2.2? 二叉平衡树类 ?7.2.3 二叉平衡树的平衡旋转 7.2.4 二叉平衡树的插入 7.3??? B-树 7.3.1? m叉搜索树 定义7.3 m叉搜索树或者是一棵空树,或者是一棵满足下列特性的树: (1)? 根结点最多有m棵子树,并具有如下结构: n,P0,(K1,P1),(K2,P2),…,(Kn,Pn) 其中,Pi是指向子树的指针,0?i?nm,Ki是元素的关键字值,1?i ?nm; (2)? KiKi+1 , 1?in; 7.3.2 B-树的定义 定义7.4 一棵m阶B-树是一棵m叉搜索树,它或者是空树,或者是满足下列特性的树: (1)根结点至少有两个孩子; (2)除根结点和失败结点外的所有结点至少有?m/2?个孩子; (3)所有失败结点均在同一层上。 7.3.3 B-树的高度 性质7.2 设B-树失败结点的总数是s,那么,一棵B-树的元素总数N是B-树的失败结点的总数减,即N=s-1。 证明: 每个非失败结点中的包含的元素数目比它所包含的指针数少1(元素=指针-1)。设非失败结点总数为n,则B-树的元素总数N等于所有非失败结点包含的指针总数t减去n,即N=t-n, 而指针总数t等于除根结点以外,失败结点数和非失败结点数的总和,即t = n+s-1。 所以有 n+s-1 = N + n ,整理得N=s-1。 7.3.3 B-树的高度 定理7.2 有N个元素的m阶B-树的高度是 因: N+1?2*(?m/2?)h-1 7.3.4 B-树的搜索 磁盘访问的次数最多是 1+log?m/2? ((N+1)/2) 7.3.5 B-树的插入 B-树插入新元素的方法 (1) 在B-树中搜索给定关键字值的元素,如果搜索成功,表示有重复元素,插入运算失败终止,否则将新元素和一个空指针插入搜索失败处的叶结点中。 (2) 若插入新元素(和一个指针)后,结点*q未溢出,即结点中包含的元素个数未超过m-1(指针数未超过m),则插入运算成功终止。 7.3.6? B-树的删除 从B-树删除元素的方法 (1)首先搜索被删除的元素,如果不存在被删除的元素,则删除运算失败终止。如果搜索成功,且被删除的元素在叶子结点中,则从该叶子结点中删除该元素;如果被删除的元素不在叶子结点中,那么由它的右侧子树上的最小元素取代之(必定在叶结点中),然后从叶子结点中删除该替代元素。 (2)如果删除元素后,当前结点中包含至少?m/2?-1个元素,删除运算成功结束。 本章小结 搜索的基本概念及其分类 二叉搜索树的定义、性质及搜索、插入、删除操作的实现 二叉平衡树的定义、性质及在插入、删除操作中的平衡旋转方法 B-树的定义及搜索、插入、删除操作的实现 思考:这几种树在进行搜索、插入、删除操作时的共同点是什么? (3)若插入新元素(和一个指针后),结点*q已溢出,则必须进行结点的分裂操作,将结点一分为三。分裂发生在位置?m/2?处。关键字

文档评论(0)

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

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

1亿VIP精品文档

相关文档