在二叉排序树中查找关键字为key地记录簿.docxVIP

在二叉排序树中查找关键字为key地记录簿.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实用标准文案 学院名称 专业班级 实验成绩 学生姓名 学号 实验日期 课程名称 数据结构 实验题目 4 查找 一、实验目的与要求 通过本次实验,掌握查找表上的有关查找方法,并分析时间复杂度。 二、主要仪器设备 Cfree 三、实验内容和原理 2.实习题 1 [问题描述 ] 编写程序实现下面运算 : 在二叉排序树中查找关键字为 key 的记录。 [输入 ] 排序二叉树,以及要查找的数字(节点)。 [输出 ] 显示该节点是否存在。 [存储结构 ] 有序表采用顺序方式存储。 [算法的基本思想 ] 若二叉排序树为空树,查找失败,返回 null 或 0; 否则,将 key 与根节点的关键字比较: 若 key=根节点的关键字,查找成功; 若 key根节点的关键字,继续在左子树中查找;若 key根节点的关键字,继续在右子树中查找。 精彩文档 实用标准文案 [参考源程序 ] #include malloc.h #include stdio.h #define NULL 0 typedef int KeyType; typedef struct { KeyType key; }ElemType; // 元素类型 typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; BiTree searchBST(BiTree bt,KeyType key){ /*在二叉排序树 bt 中查找其关键字等于给定值的结点是否存在,并输出相应信息 */ if (bt==NULL) return NULL;// 在排序二叉树中进行递归查找 else if (bt-data.key==key) return bt; else if (keybt-data.key) return searchBST(bt-lchild,key); else return searchBST(bt-rchild,key); } void insertBST(BiTree *bt,BiTree s){ /*在二叉排序树中插入一个新结点 ,即依次插入输入的数 */ if (*bt==NULL) *bt=s; else if (s-data.key(*bt)-data.key) insertBST(((*bt)-lchild),s); else if (s-data.key(*bt)-data.key) insertBST(((*bt)-rchild),s); } main(){ char ch; 精彩文档 实用标准文案 KeyType key; BiTree bt,s; int i=0; /*建立一棵二叉排序树,元素从键盘按先序输入,直到输入关键字等于 -1 为止 */ printf(\n 请输入元素 (-1: 结束 ):\n);// 以 -1 为结束 scanf(%d,key); bt=NULL; while (key!=-1){ s=(BiTree)malloc(sizeof(BiTNode)); (s-data).key=key;s-lchild=s-rchild=NULL; insertBST(bt,s); scanf(%d,key); }//while /*二叉排序树的查找,可多次查找,并输出查找的结果 */ do { printf(\n 输入你想要查找的元素: ); scanf(%d,key); s=searchBST(bt,key); if (s!=NULL) printf(\n 成功 ! 这个等价元素是 %d.\n,s-data.key); else printf(\n 没有找到 !\n); printf(\n 是否继续 ?(y/n) : ); scanf(%c,ch); ch=getchar(); } while (ch==y || ch==Y) ; getchar(); }//main 实验结果: 精彩文档 实用标准文案 五、实验结果与分析 2)习题 1:采用先序遍历的方式生成二叉树,程序中多次使用的递归的算法。使程序看起来很简洁。如果把头结点的生成也放到生成树的函数中,会使程序看起来更加调理。六、实验心得及体会 查找是很多程序的基础, 很多程序中都会用到查找。 比如在线性表的插入和删除时要查找合 适的位置。 所以学好查找是很必要的。 本次实验只要是采取了这般查找的方法。 其实还有很 多查找的方法。 如顺序查找,索引顺序表查找。每种查找方法各有优劣。如折半查找的平均 查找长度小于顺序查找, 但它要求查找的表为有序的。 所以需将无序表排序成有序表。 这又 会浪费运行时间。编写程序时遇到了很多的困难,如先序生成树更好还是中序生成更好。 精彩文档 实用

文档评论(0)

135****9492 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档