第8章《查找》知识介绍.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
fdfd 为什么要针对各种数据结构进行查找? 在程序设计中,根据实际情况的需要,要将数据存储为一些特定的数据结构,例如数组,队列,堆,数等等。程序的业务逻辑有时候需要确认某项数据是否存在。因此,要进行查找。例如 宾馆电梯控制程序,查找Vip楼层是否在队列中 国家缉毒部门要查找可疑的毒品走私犯人 等等 游戏:猜商品价格 某款IPad的价格在2000元到3000元之间,猜出它的价格。实际价格在下页 游戏:猜商品价格 实际价格:2888元 查找示例:假如要查找42,则根据索引表: 问题1:如果实现知道一个长度为1600位的查找表,被分为40块,按块单调增加,每块中的数据都是按照单调增加排列的,则是否还有必要利用索引顺序表进行查找? 例:从给定的一列数据出发,构造二叉排序树。 给定:56 52 60 43 65 28 80 96 40 39 45 例:从给定的一列数据出发,构造二叉排序树。 给定: 52 56 60 43 65 28 80 96 40 39 45 12 45 3 37 53 100 24 61 在如下二叉排序树中插入25过程演示 45 25 二叉排序树的插入过程演示 12 37 24 8.2.1 二叉排序树和平衡二叉树 二叉排序树的插入算法 Status InsertBST(BiTree T, ElemType e){ BiTree p,s; if (!SearchBST(T, e.key, NULL, p)){ // 查找不成功 s = (BiTree)malloc(sizeof(BiTNode)); s-data = e; s-lchild = s-rchild = NULL; if (!p) T = s; // 插入 s 为新的根结点 else if (LT(e.key, p-data.key)) p-lchild=s; // 插入s为左孩 else p-rchild = s; // 插入 s 为右孩 return TRUE; } else return FALSE; // 树中已有关键字相同的结点,不再插入 } // Insert BST 8.2.1 二叉排序树和平衡二叉树 二叉排序树的插入算法分析 二叉排序树的插入算法的时间复杂性与查找 算法的时间复杂性相同; 最好情况是O(log2n);最坏情况是O(n);平均情况是O(log2n)。 思考题:如何生成二叉排序树? 答案:从空树开始循环调用插入算法。 8.2.1 二叉排序树和平衡二叉树 产生了一棵不平衡的二叉排序树 8.2.1 二叉排序树和平衡二叉树 60 65 80 96 52 43 45 28 40 39 56 产生另外一棵不平衡的二叉排序树 8.2.1 二叉排序树和平衡二叉树 56 60 65 80 43 40 45 39 52 96 28 在二元查找树上的删除一个结点,要求删除结点后,仍保持二叉排序树的结构特点不变。 二叉排序树的结点删除定义 8.2.1 二叉排序树和平衡二叉树 (1) p为叶结点 (2) p只有左子树 (3) p只有右子树 (4) p左右子树都有 设被删结点为p,其双亲结点为f,则p可能有以下4种情况: 二叉排序树的结点删除方法 8.2.1 二叉排序树和平衡二叉树 (1) p为叶结点,如右图所示: 删除方法:释放结点p,修改其父结点f的相应指针。 f p 12 45 3 37 53 100 24 61 51 25 二叉排序树的结点删除方法 8.2.1 二叉排序树和平衡二叉树 (2) p只有左子树,如上图 所示: 删除方法:释放结点p,p的左子树顶替p点的位置。 p 12 45 3 37 53 100 24 61 51 25 12 45 3 53 100 24 61 51 25 二叉排序树的结点删除方法 8.2.1 二叉排序树和平衡二叉树 (3) p只有右子树, 如上图 所示: 删除方法:释放结点p,p的右子树顶替p点的位置。 12 45 3 37 53 100 24 61 25 12 45 3 37 100 24 61 25 二叉排序树的结点删除方法 8.2.1 二叉排序树和平衡二叉树 把左子树作为右子树

文档评论(0)

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

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

1亿VIP精品文档

相关文档