第六章 二叉树 查找 遍历.pptVIP

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 查找 第7章 查找 第7章 查找(Search) Introduction 查找是非数值处理中一种最基本、最重要的操作。 查找,也称检索,是一种运算,是软件设计中经常遇到的一种运算。数据结构不同,查找方法也会不同。查找方法的好坏直接影响着计算机的使用效率。 7.1、查找基本概念 1)查找 Search:又称检索,是指在大量的数据中寻找关键字等于给定值的记录。若存在这样一个记录,则称查找成功,否则称查找不成功。 分为:静态查找;动态查找; 2)关键字 (Keyword):就是数据元素中可以唯一标识一个数据元素的数据项。 例如:学生管理登记卡中的学号。 3)平均查找长度 (Average Search Length) (ASL) 算法评价 :评价时考虑:(1) 速度; (2) 占用存储空间; (3) 复杂程度。 结构体数组 typedef struct {char name[10]; KeyType key; }DataType; DataType r[Maxnum]; 算法分析: int seqsearch(DataType r[], int key, int n) {int i; r[0].key=key; i=n; while(r[i].key!=key) i--; return i; } 算法分析 算法简单,效率较低 Search int binsearch(DataType r[],int n,int key) {int low,high,mid; low=0; high=n-1; while(low=high) {mid=(low+high)/2; if(key==r[mid].key)return mid; else if(key r[mid].key) low=mid+1; else high=mid-1; } returu –1; } 折半法算法分析 假设:查找关键字为0-6的数据 比顺序查找效率高 只适用于有序的顺序存储的表, 3. 分块查找(索引顺序表查找) 将顺序查找法与折半查找法结合 索引表类型: 算法分析 7.3. 基于树的查找 用树结构存储记录既可查找又可插入和删除 1.树表查找方法: 二叉排序树查找 平衡二叉排序树查找 B-树查找 (1) 二叉排序树的定义: 或是空树,或具有以下性质的二叉树: ①其左子树上所有结点的数据均小于根结点的数据值. ②其右子树上所有结点的数据均大于或等于根结点的数据值. ③左、右子树又各是一棵二叉排序树。 (2)二叉排序树的生成 生成一棵二叉排序树,过程如下: ①若二叉排序树为空,则令待插结点为根结点, ②若二叉排序树非空,则比较待插结点(k1)和根结点(k2)的数据值。若k1k2,则将其插入到左子树中;否则,将其插入到右子树中. ③结点插入二叉排序树的左、右子树过程同上. 课堂练习: 用以下序列组成一棵二叉排序树. {23,4,12,89,9,43,4,56,23} ①插入的新结点都是二叉排序树的叶子结 点.不必移动其它结点.常用于有序二叉树 的插入,删除. ②对二叉排序树采用中序遍历,其结果为一有序序列. ③根结点的选择,决定二叉树的形状,其形状决定检索的效率.根结点数据值最好选择元素序列的中间值. BiTree *btsearch(BiTree *p, int key) //p指向二叉排序树的根结点 {while(p!=NULL) {if(key==p-key) return p; else if(keyp-key) p=p-L; else p=p-R; } return NULL; } 4. 算法分析 7.4 哈希查找(散列查找) 前述的查找方法建立在“比较”的基础上,查找的次数依赖于查找过程中进行比较的次数。 问题:能否不用比较就能直接计算出记录的存储地址,从而找到所要的结点? ----采用散列(hash)方法。 1.哈希(散列)表的基本概念 哈希(又称杂凑、散列)的基本思想: 以记录的关键字值k为自变量,通过一定的函数关系h计算出对应的函数值h(k),把这个值解释为记录的存储地址(哈希地址),将记录存入该地址中

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档