




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验3实现二叉排序树一 实验目的:1.掌握二叉排序树的定义以及基本操作的实现算法。2编写实验报告3。 熟练掌握顺序查找、折半查找及二叉排序树、平衡二叉树上的查找、插入和删除 的方法。问题描述:实现二叉排序树的查找、插入和删除操作。步骤:1定义二叉链表结构存储二叉排序树。2实现二叉排序树的查找、插入和删除操作算法。3设计测试用二叉排序树并使用插入算法创建对应的内存二叉树,能够测试查找、插入和删 除算法的边界。4完成实验的实验报告,报告的格式采用数据结构题集的模板格式。两周之后提交。 设备和环境:PC计算机、Windows操作系统、C/C+开发环境结论:能够理解和掌握二叉排序树的基本算法。二需求分
2、析查找是数据处理的重要操作。请设计并实现基于二叉排序树的商品信息查询 算法。完成信息的查询、插入、删除、查询频度的统计等功能。三、概要设计建立二叉排序树,并实现基本操作,验证其准确性。四、详细设计#include#includetypedef struct nodeint key;struct node*lch,*rch;bitnode;bitnode*creat_bt();/二叉顺序树的建立bitnode*search(bitnode*root,int data);/查找是 data 存在与否,若不存在返回待查找data的父结点指针void searchx(bitnode*root,int
3、data);/判断所查找的元素data是否存在,并给出相应的提示void display(bitnode*t);/中序遍历二叉树,以验证二叉树的正确bitnode*deletex(bitnode*t,int data);/在二叉树中删除key为data的结点bitnode*add(bitnode*t,int k);/在二叉树中添加 key为data的结点int n=l;/用于记数的全局变量void main()bitnode*t;int a,key; do printf(*王菜单 *) printf(n 1.建立二叉树);printf(n 2.删除二叉树中指定元素为key的结点); print
4、f(n 3.向二叉树中添加指定元素为key的结点); printf(n 4.在二叉树中查找指定元素为key的结点); printf(n 5.中序遍历二叉树,以检验正确性); printf(n 6.结束程序运行);printf(n 请输入您的选择(1,2,3,4,5,6):); scanf(%d, &a);switch(a) case 1: t=creat_bt();break;case 2:printf(请输入所要删除的结点的key值:);scanf(%d, &key);t=deletex(t,key);break; case 3:printf(请输入要添加的元素的key值作为第0个结点:,n
5、+);scanf(%d, &key);t=add(t,key);break; case 4:printf(请输入所要查找的元素的key值:);scanf(%d, &key);searchx(t,key);break; case 5: display(t);printf(nnn);printf(nnn);while(a!=6);printf(GOOD BYE!); bitnode*creat_bt()/二叉顺序树的建立int k;bitnode*t=NULL,*s,*f;printf(请输第d个关键字key的值(以输入0为结束):,n); scanf(%d, &k);while(k!=0)n+;
6、/用于记数s=(bitnode*)malloc(sizeof(bitnode); s-key=k;s-lch=NULL;s-rch=NULL;if(t=NULL)t=s;else f=search(t,k);if(k=f-key)/已存在 k元素 printf(n提示:已存在该元素,请重新输入);n_;else if(kkey)f_lch=s;else f_rch=s;printf(请输入第d个关键字key的值(以输入0为结束):,n); scanf(%d, &k);return t;bitnode*search(bitnode*root,int data)/查找是 data 存在与否,若不存
7、在返回待查找data的父结点指针bitnode*p=NULL,*q=root;while(q)p=q;/已存在元素/已存在元素data,返回data所在的位置qelse if(datakey)q=q-lch;else q=q-rch;return p;/返回待查找data的父结点指针/判断所查找的元素void searchx(bitnode*root,int data) data/判断所查找的元素bitnode*p=NULL,*q=root;int tag=0;while(q & tag=0)p=q;if(data=q-key) tag=l;break;/找到元素 dataelse if(da
8、takey)q=q-lch;else q=q-rch;if(tag=1)printf(n二叉树中存在所查找的元素%d,data);else printf(n二叉树中不存在所查找的元素%d,data);/在二叉树中删除keybitnode*deletex(bitnode*t,int data) 为/在二叉树中删除key bitnode*p,*f,*s,*q;int flag=0;p=t;f=NULL; while(p!=NULL) if(p-key=data) flag=1;break; f=p;if(p-keydata)p=p-lch;else p=p-rch;if(p=NULL)printf
9、(在此二叉树中无此值,无法完成删除操作。);return t;/无此值if(p-lch=NULL)if(f=NULL)t=p-rch;else if(f-lch=p) f-lch=p-rch;else f-rch=p-rch;free(p);elseq=p;s=p_lch;while(s-rch) q=s;s=s_rch;if(q=p)q_lch=s_lch;else q_rch=s_lch;p_key=s_key;free(s);n_;return t;bitnode *add(bitnode *t,int k)/在二叉树中添加 key为data的结点bitnode*s,*f;s=(bitn
10、ode*)malloc(sizeof(bitnode);s_key=k;s_lch=NULL;s_rch=NULL;f=search(t,k);if(k=f_key)/已存在 k 元素printf(n提示:已存在该元素,请重新输入要添加的元素的key值作为第0 个结点:);else if(kkey) f_lch=s;else f_rch=s;return t;void display(bitnode*t)/中序遍历二叉树,以验证二叉树的正确性if(t)display(t_lch);printf(%5d,t_key); display(t_rch);五、调试过程应该划分模块,对不同的操作应用不同
11、的函数来完成。在调试过程中,关于 添加节点的那部分比较难,没能实现文件的储存和读取功能(其实本来就没 打算实现)六、结果分析这个程序有人性化的界面,还可以用中序遍历输出明了的建树的结果,可以很方便地来 操作。以下是操作界面截图: G:micro 5oft_visua lc6M SDev98BinDeb u gzj. exe点点 点结结 结的的 的ey門系验a!2 3 4 5 6 7 0 :豆豆豆豆豆豆豆 菽士口士口士口士口士口士口士口T-#士勺勺7勺勺勺勺勺. 宀 “7.斗/斗/斗/斗/斗/斗. 0 0 0 0 0 0 0 0-iAI.A(lll以以以以以以 .5I.-值值值值值值值LX 一-r.-J“ ?韦TIDg中馨叉行,4書的的的的的的斗胃$二运,3的历序,2y y y y y y y eeeeeee ykkkkkkkkeIHMMMMH于 二亠舟软宀子键键键键键键键 4 5 6 2 3 4 5 6 7 8 您/第第第第第第第 AMAAAAAAA .:j 刖 j 刖 j 刖 j FFk一 刖宀一刖宀一刖宀一刖宀一別主冃主冃主冃主冃青青青青青屮6 5 A 3 2 1 鼬論刍鋼 蔽邪则l| I舉煤 a谕斂眉1 il I l沏胡茸畫眉眉 訂丽
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年统计学考试难度与试题及答案
- 血液病考试题及答案
- 食品质检员考试的技术标准化研究试题及答案
- 恐怖古诗考试题目及答案
- 2024年统计学解决实际问题的技巧试题及答案
- 六年级语文考试技巧试题及答案
- 2024年汽车维修工工艺流程了解试题及答案
- 汽车故障排查实例与解决方案试题及答案
- 统计学考试经典难题解析试题及答案
- 小地方国企面试题及答案
- 《失语症的康复治疗》课件
- 2025年安徽省交通控股集团招聘笔试参考题库含答案解析
- 品管圈活动在提高急诊危重患者科间交接规范率的效果分析
- 2024年03月福建厦门银行总行社会招考(330)笔试历年参考题库附带答案详解
- 机电工程施工方案-施工组织设计(技术方案)
- 2024年度储能电站在建项目收购合作协议范本3篇
- 江苏省盐城市、南京市2025届高三第二次模拟考试语文试卷含解析
- 快消部门2024年度营销活动计划表
- 【MOOC】跨文化思想交流英语-南京理工大学 中国大学慕课MOOC答案
- 2024年共青团入团考试测试题库及答案
- 车间目视化管理培训
评论
0/150
提交评论