网站大量收购闲置独家精品文档,联系QQ:2885784924

沈阳工业大学信息科学与工程学院数据结构课件 第8章.ppt

沈阳工业大学信息科学与工程学院数据结构课件 第8章.ppt

  1. 1、本文档共113页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 查找 基于有序顺序表的折半查找 设n个对象存放在一个有序顺序表中,并按其关键码从小到大排好了序。 折半查找时, 先求位于查找区间正中的对象的下标mid,用其关键码与给定值x比较: Element[mid].key == x,查找成功; Element[mid].key x,把查找区间缩小 到表的前半部分,继续折半查找; Element[mid].key x,把查找区间缩小 到表的后半部分,继续折半查找。 如果查找区间已缩小到一个对象,仍未找到想要查找的对象,则查找失败。 有序顺序表的折半有哪些信誉好的足球投注网站的判定树 ( 10, 20, 30, 40, 50, 60 ) 查找成功时检测指针停留在树中某个结点。 查找不成功时检测指针停留在某个外结点(失败结点)。 折半查找性能分析 若设 n = 2h-1,则描述折半查找的判定树是高度为 h-1 的满二叉树。 2h = n+1, h = log2(n+1) 第0层结点有1个,查找第0层结点要比较1次; 第1层结点有2个,查找第1层结点要比较2次; …, 第 i (0 ≤ i ? h) 层结点有 2i 个,查找第 i 层结点要比较 i+1次,…。 假定每个结点的查找概率相等,即 pi = 1/n,则查找成功的平均查找长度为 二叉排序树 ( Binary Sort Tree ) 二叉排序树例 结点左子树上所有关键码小于结点关键码。 右子树上所有关键码大于结点关键码。 n 个结点的二叉排序树的数目 【例】3 个结点的二叉有哪些信誉好的足球投注网站树: 假设想要在二叉排序树中有哪些信誉好的足球投注网站关键码为x的元素,有哪些信誉好的足球投注网站过程从根结点开始。 如果根指针为NULL,则有哪些信誉好的足球投注网站不成功;否则用给定值x与根结点的关键码进行比较: 如果给定值等于根结点的关键码,则有哪些信誉好的足球投注网站成功。 如果给定值小于根结点的关键码,则继续递归有哪些信誉好的足球投注网站根结点的左子树; 否则。递归有哪些信誉好的足球投注网站根结点的右子树。 为了向二叉排序树中插入一个新元素,必须先检查这个元素是否在树中已经存在。 在插入之前,先使用有哪些信誉好的足球投注网站算法在树中检查要插入元素有还是没有。 有哪些信誉好的足球投注网站成功: 树中已有这个元素,不再插入。 有哪些信誉好的足球投注网站不成功: 树中原来没有关键码等于给定值的结点,把新元素加到有哪些信誉好的足球投注网站操作停止的地方。 二叉有哪些信誉好的足球投注网站树的删除 在二叉有哪些信誉好的足球投注网站树中删除一个结点时,必须将因删除结点而断开的二叉链表重新链接起来,同时确保二叉有哪些信誉好的足球投注网站树的性质不会失去。 为保证在删除后树的有哪些信誉好的足球投注网站性能不至于降低,还需要防止重新链接后树的高度增加。 删除叶结点,只需将其双亲结点指向它的指针清零,再释放它即可。 被删结点右子树为空,可以拿它的左子女结点顶替它的位置,再释放它。 被删结点左子树为空,可以拿它的右子女结点顶替它的位置,再释放它。 被删结点左、右子树都不为空,可以在它的右子树中寻找中序下的第一个结点(关键码最小),用它的值填补到被删结点中,再来处理这个结点的删除问题。 AVL树 高度平衡的二叉排序树 结点的平衡因子 (balance factor) 每个结点附加一个数字, 给出该结点左子树的高度减去右子树的高度所得的高度差,这个数字即为结点的平衡因子balance 。(有的书定义为右子树的高度减去左子树的高度所得的高度差) AVL树任一结点平衡因子只能取 -1, 0, 1 如果一个结点的平衡因子的绝对值大于1,则这棵二叉有哪些信誉好的足球投注网站树就失去了平衡, 不再是AVL树。 如果一棵二叉有哪些信誉好的足球投注网站树是高度平衡的, 且有 n 个结点,其高度可保持在O(log2n),平均有哪些信誉好的足球投注网站长度也可保持在O(log2n)。 平衡化旋转 如果在一棵平衡的二叉排序树中插入一个新结点,造成了不平衡。此时必须调整树的结构,使之平衡化。 平衡化旋转有两类: 单旋转 (左旋和右旋) 双旋转 (左平衡和右平衡) 每插入一个新结点时, AVL 树中相关结点的平衡状态会发生改变。因此, 在插入一 个新结点后,需要从插入位置沿通向根的路径回溯,检查各结点的平衡因子。 如果在某一结点发现高度不平衡,停止回溯。从发生不平衡的结点起,沿刚才回溯的路径取直接下两层的结点。 如果这三个结点处于一条直线上,则采用单旋转进行平衡化。单旋转可按其方向分为左单旋转和右单旋转, 其中一个是另一 个的镜像,其方向与不平衡的形状相关。 如果这三个结点处于一条折线上,则采用双旋转进行平衡化。双旋转分为先左后右和先右后左两类。 左单旋转 (RotateLeft ) 再以结点E为旋转轴,将结点A顺时针旋转。使之平衡化。 先右后左双旋转 (RotationRightLeft) 在结点A的右子女的左子树中插入新结点,该子树高度增1。结点A的平衡因子变为2,发生了不平衡。以结点D为旋转轴,将结点C顺时针旋转,以D代替原来C的位置。 AVL树的建立 算法从一棵空树

文档评论(0)

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

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

1亿VIP精品文档

相关文档