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

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

  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)

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

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

1亿VIP精品文档

相关文档