数据结构课件8查找1章节幻灯片.PPT

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
同样 3 个数据{ 1, 2, 3 },输入顺序不同,建立起来的二叉排序树的形态也不同。这直接影响到二叉排序树的查找性能。 如果输入序列选得不好,会建立起一棵单支树,使得二叉排序树的高度达到最大,这样必然会降低查找性能。 {2, 1, 3} {1, 2, 3} {1, 3, 2} {2, 3, 1} {3, 1, 2} {3, 2, 1} 平衡二叉树 平衡二叉树定义: 或者是一棵空树,或者是具有下列性质的二叉树 左子树和右子树都是平衡二叉树 左子树和右子树的深度之差的绝对值不超过1 平衡二叉树的生成过程 输入数据序列{13,24,37,90,53 } 13 13 24 24 37 13 37 13 24 24 37 13 90 53 24 37 13 53 90 24 53 13 90 37 B-树 一棵m阶B-树是一棵平衡的m路查找树,它或者是空树,或者是满足下列性质的树: 树中每个结点至多有m棵子树 若根结点不是叶子结点,则至少有两棵子树; 除根结点以外的所有非终端结点至少有?m/2 ?棵子树; 所有的叶子结点都位于同一层,且不带信息(可看作外部结点或查找失败结点)。 所有非终端结点包含下列信息数据: ( n, P0, K1, P1, K2, P2, … ,Kn , Pn ) ?m/2 ?-1=n=m-1 B-树举例 B-树的查找举例 在下面的图中查找关键码35。依次读入结点a、c、f ,查找成功。若查找37,则在结点f后进入失败结点,查找失败。 B-树的查找分析 若查找成功,则所需时间取决于关键码所在的层次; 若查找不成功,则所需时间取决于树的高度。 B- 树的插入 B-树是从空树开始,逐个插入关键码而成。 插入可能导致结点的“分裂”。当插入后关键码个数不超过m-1时,可以直接插入;否则,需要进行结点的“分裂” 。 “分裂”的原则 设结点p中已经有m-1个关键码,插入后为: (m,P0 ,K1 ,P1 ,K2 ,P2 ,...,Km ,Pm) 可以将它分解为两个结点: p:( ?m/2 ? -1,P0 ,K1 ,P1 ,K2 ,P2 ,...,K?m/2 ? -1 ,P ?m/2 ? -1) q:(m- ?m/2 ?,P ?m/2 ?,K ?m/2 ? +1 ,P ?m/2 ? +1 ,...,Km ,Pm) 位于中间的关键码Km/2与新结点q形成二元组 K ?m/2 ? ,q 插入到这两个结点的父结点中。 “分裂”举例(在3阶B-树中插入139) 从空树开始的插入举例 从空树开始的插入举例(续) B-树的删除 首先从B-树中查找关键码Ki所在结点。 若该结点为最下层结点,则直接删除它; 若该结点为非最下层结点,则用Pi对应的子树中的最小关键码x代替Ki所在位置,故问题转换为叶结点上关键码的删除。 B-树的删除的4种情况 1 简单删除 所在最下层结点又是根结点,且关键码个数大于2; 2 简单删除 所在最下层结点不是根结点,且删除前关键码个数大于等于?m/2 ? ; 3 借键 所在结点删除前关键码个数为 ? m/2 ? -1,“右借”或“左借”成功。 4 级联合并 所在结点删除前关键码个数为 ? m/2 ? -1, 此时“右借”和“左借”不成功。 3阶树中简单删除举例 3阶树中终端结点借键举例 3阶树终端结点简单合并举例 非终端结点的简单删除举例 B+树 B+树是B-树的变型树。m阶B +树定义为: 1 树中每个非叶子结点最多有m棵子树; 2 根结点(非叶子结点)至少有2个子树;其它非叶子结点至少有 ?m/2 ? 棵子树;有n棵子树的非叶子结点有n个关键字。 3 所有的叶子结点都位于同一层,从小到大顺序链接。 4 所有非叶子结点可看成是索引部分,结点中仅含有其子树中的最大或最小关键字。 ?m/2 ? =n=m 3阶B+树举例 非叶结点中子树棵数n∈[2,3] 59 97 15 44 59 72 97 10 15 21 37 44 51 59 63 72 85 91 97 root aqt 小结 静态查找表 顺序查找 折半查找 分块查找 动态查找表 二叉排序树和平衡二叉树 B-树和B+树 查找 梁春燕 华北电力大学 信息管理教研室 主要内容 静态查找表 动态查找表 查找 查找——也叫检索,是根据给定的某个值,在表中确定一个关键字等于给定值的记录或数据元素 关键字——是数据元素中某个数据项的值,它可以标识一个数据元素 查找方法评价

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档