- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构
实验报告
实验题目: 二叉排序树
班 级: 计算机141(专升本)
姓 名: 黄跃翔
学 号:
完成日期: 2015年6月12日
需求分析(说明实验任务,包括输入、输出、功能、测试数据等)
1.问题描述(Problem Description):
输入一个整数关键字序列L,生成一棵用链式存储结构存储的二叉排序树,对该二叉排序树能进行查找和插入结点的操作,并对该二叉排序树中结点的关键字按递增和递减顺序输出。
具体要求:
输入数据的第一行为一个正整数T, 表示测试数据的组数。然后是T组测试数据。每组测试数据的第一行输入正整数n(5≤n≤20),第二行输入n个整数,要求依次完成以下工作:
(1) 以这n个整数生成(建立)一棵用链式存储结构存储的二叉排序树;
(2) 按递增顺序输出该二叉排序树中的整数(关键字);
(3) 输入一个整数key,对该二叉排序树进行查找,若在该二叉排序树中存在这个整数key,则输出find,否则输出not find。
(4) 输入一个整数key,若该二叉排序树中不存在这个整数key,则将key插入到该二叉排序树中,使插入后仍为原性质的二叉排序树;否则不必插入;
(5) 在(4)的基础上,按递减顺序输出该二叉排序树中的整数(关键字)。
2.对于输入输出的要求:
Input(输入)
输入数据的第一行为一个正整数T, 表示测试数据的组数。然后是T组测试数据。每组测试数据的第一行输入正整数n(5≤n≤20),第二行输入n个整数,第三和第四行均输入整数key。
Output(输出)
每组输出的第一行为按递增顺序输出该二叉排序树中的整数(关键字),每两个整数之间一个空格;第二行为find或not find;第三行为按递减顺序输出该二叉排序树中的整数(关键字)。
4.测试数据总共有两组:
第一组
8
10 79 6 81 43 75 26 69
43
69
第二组
10
94 22 25 24 20 42 39 71 53 57
88
1
5.测试数据结果输出:
第一组:
6 10 26 43 69 75 79 81
find
81 79 75 69 43 26 10 6
第二组:
20 22 24 25 39 42 53 57 71 94
not find
94 71 57 53 42 39 25 24 22 20 1
概要设计(数据类型的定义、算法思想、主程序和子程序(或功能)模块的说明及各程序模块之间的层次(调用)关系)
1.数据结构
typedef struct node // 二叉排序树中的结点结构
{
int data; // 整数(关键字)数据域
struct node *lchild,*rchild; // 指向左右孩子的指针
}nodeb,*bitree;
算法思想
第一部分:
建立二叉排序树。其关键字要求是各不相同的,则对于输入的关键字序列中的每一个整数,要在正在建立的二叉排序树中去查找是否已经存在该整数,不存在时,由查找模块返回要插入的结点位置的双亲结点,根据要建立的二叉排序树的性质,当要增加的整数比双亲结点的整数小的话就插到其左孩子的位置,否则插到其右孩子的位置。这样重复,直到输入结束(输入的整数为-1)为止。
第二部分:
查找算法是从二叉排序树的根结点开始,根据要查找的整数,若比其当前二叉排序树结点中的整数小就进入其左孩子所在的左子树中继续搜索,否则进入其右左孩子所在的右子树中继续搜索,这过程中,每进入子树前,保存当前结点,以便带回要插入结点的双亲结点。搜索直至找到要查找的整数,用一指针带回;或搜索直至叶子结点的下方,找不到要查找的整数而使空指针带回,以便判断要查找的整数是否找到。
第三部分:
按递增顺序输出该二叉排序树中的整数(关键字),可直接用某种二叉树的遍历算法实现;按递减顺序输出该二叉排序树中的整数(关键字),只要对某种二叉树的遍历算法稍作修改即可。同时插入算法思路和建立二叉排序树时增加一个整数的思路是一样的。
主程序
int main()
{
重复m组:
调用createbintree()算法建立二叉排序树t;
调用某种二叉树遍历算法按递增顺序输出该二叉排序树中的整数(关键字);
输入要查找的整数,调用searchbst()算法查找要查找的整数;
根据查找的结果输出
您可能关注的文档
最近下载
- 枕头坝一级水电站水轮发电机转子支架组装与焊接工艺.docx VIP
- 2025-2026学年统编版(2024)七年级道德与法治上册全册教案(教学设计).docx
- 心理健康状况自评量表(SCL-90).doc VIP
- DB21_T 4014-2024 建筑垃圾资源化利用技术规程.pdf VIP
- 某道路新建污水管道工程监理规划.doc VIP
- 苍南县小型农田水利设施技术升级改造经济效益分析.docx VIP
- DB32_T 4463-2023 水域状况评价规范.docx VIP
- 南京科目一新题库及答案.doc VIP
- 市政污水管道工程监理规划.doc VIP
- 关工委办公室主任关心下一代的先进事迹材料.docx VIP
文档评论(0)