版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目:(二叉搜索树)开始一个数n,(1<=n<=20)表示有n个序列需要判断,n=0的时候输入结束。接下去一行是一个序列,序列长度小于10,包含(09)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一棵二叉搜索树。如果序列相同则输出YES,否则输出NO。 要求:(1) 序列个数范围为120.(2) 序列长度小于10,没有重复数字。1、问题分析和任务定义 从题目可知,需要输入多个序列,而且序列中没有重复数字。用第一个序列与剩下的几个序列分别比较,判断两个序列能不能组成同一个序列。 在编程中
2、需要建立二叉树,如何判断两个二叉树能不能组成同一棵二叉搜索树是一个关键问题。由于所有二叉搜索树的先序编列都是递增的,而且中序遍历可以用来区分二叉树,所以用中序遍历来判断两个序列能否组成同一棵二叉树,同时用数组来存储中序遍历后的序列。 因此解决问题的方案是:先序遍历二叉树,用数组存储先序遍历后的序列,用数组来判断两个序列能否组成同一棵二叉搜索树。2、数据结构的选择和概要设计 由于二叉树无法直接比较,所以先先序遍历二叉搜索树,同时用数组存储。 我的设计思路是:先建立一个二叉树,然后先序遍历它,由于数组可以比较,所以用数组存储。数组中的数分别对应先序遍历二叉树后的序列中的数所以把数组中对应的数分别比
3、较,同时定义一个整型常量f,如果数组中对应的数相同,f+,否则退出。用f值与数组长度比较,如果相等,则两个系列能组成同一棵二叉搜索树,否则,不能。3、详细设计和编码 程序的核心流程为:建立二叉树 先序遍历二差树数组存储遍历二叉树的序列数组比较程序的核心即为先序遍历二叉树和数组存储如下:preorder(Bstnode *T) /先序遍历二叉树 if(T) printf("%4d",T->key); i+;ai=T->key;/printf(" ");/printf("数组的下标i=%d",i);preorder(T->
4、;lchild);preorder(T->rchild); f=1; /利用数组存储并比较/printf("f=%dn",f); for(e=b;e<d;e+) if(af=ae) f+; else break; /printf("f=%dn",f); /printf("f=%d",f); if(f=d-b+1) printf("yes"); else printf("no"); printf(" "); /printf("i=%d",i);4
5、、上机调试过程问题:序列是无法比较的,故无法直接判断两个序列能否组成同一棵二叉树;在循环时无法直接退出必须人工退出。解决方法:用数组存储,用数组知识来判断两个序列能否组成同一棵二叉搜索树。先序遍历二叉树得到一个新的序列,同时定义一个全局变量数组用来存储先序遍历二叉树后得到的序列,这样可以直接通过数组的比较来间接判断两个序列能否组成同一个二叉搜索树。至于第二个问题,只要定义一个整型常量n,利用while循环,以n!=0为循环条件来直接退出运行过后的界面。部分程序: while(scanf("%d",&n)!=EOF&&n!=0) /以while循环作为
6、循环结束的标志t1=CreateBst();printf("先序排列后的序列:n");preorder(t1);putchar('n'); printf("以数组形式存储:n"); for(i=1;i<10;i+) printf("%2d",ai); putchar('n');b=i+1; /printf("输入需要与第一个序列比较的序列个数:");/scanf("%d",&n); printf("请输入%d个序列,比较完后以0退出,否则继
7、续输入序列:n",n) ;for(c=0;c<n;c+) /printf("第二个树"); t2=CreateBst(); printf("先序排列后:n"); preorder(t2); putchar('n'); printf("以数组形式存储:n"); for(d=b;d<b+9;d+) printf("%2d",ad); putchar('n'); f=1;/printf("f=%dn",f); for(e=b;e<d;e+)
8、if(af=ae) f+; else break; /printf("f=%dn",f); /printf("f=%d",f); if(f=d-b+1) printf("yes"); else printf("no"); printf(" "); /printf("i=%d",i); b=i+1; 5、测试结果及其分析测试数据1:测试数据2:6、用户使用说明 输入一个数字n(1<=n<=20)表示需要与被比较的序列的序列个数,先输入被比较序列,先序遍历它同时以数组
9、形式存储。然后输入需要与被比较序列比较的序列,也是先遍历序列在以数组形式存储。在比较过程中如果两个序列能组成同一棵二叉搜索树,则输出yes,否则输出no。7参考文献1王昆仑,李红。数据结构与算法。北京:铁道工业出版社,2007年5月第一版2徐孝凯。数据结构实用教程。北京:清华大学出版社。1999年12月第一版8、附录#include "stdio.h"#include "malloc.h"#include "string.h"#define NULL 0#define endflag -1 int a10;int i=0; typed
10、ef struct nodeint key;/int other;struct node *lchild,*rchild;Bstnode;Bstnode *insertBst(Bstnode *t,int x)Bstnode *s,*p,*f;p=t;while(p!=NULL)f=p;if(x=p->key) return t;if(x<p->key) p=p->lchild;else p=p->rchild;s=(Bstnode *)malloc(sizeof(Bstnode);s->key=x;s->lchild=NULL;s->rchil
11、d=NULL;if(t=NULL) return s;if(x<f->key) f->lchild=s;else f->rchild=s;return t;Bstnode *CreateBst()Bstnode *t;int key;t=NULL;scanf("%d",&key);while(key!=endflag)t=insertBst(t,key);scanf("%d",&key);return t;preorder(Bstnode *T) if(T) printf("%4d",T->
12、;key); i+;ai=T->key;/printf(" ");/printf("数组的下标i=%d",i);preorder(T->lchild);preorder(T->rchild);void main() int b,c,d,e,f; Bstnode *t1,*t2; int n; printf("请输入需要与被比较序列的序列个数(1<=n<=20),然后再输入被比较序列:"); /scanf("%dn",&n); while(scanf("%d"
13、,&n)!=EOF&&n!=0) t1=CreateBst();printf("先序排列后的序列:n");preorder(t1);putchar('n'); printf("以数组形式存储:n"); for(i=1;i<10;i+) printf("%2d",ai); putchar('n');b=i+1; /printf("输入需要与第一个序列比较的序列个数:");/scanf("%d",&n); printf("
14、;请输入%d个序列,比较完后以0退出,否则继续输入序列:n",n) ;for(c=0;c<n;c+) /printf("第二个树"); t2=CreateBst(); printf("先序排列后:n"); preorder(t2); putchar('n'); printf("以数组形式存储:n"); for(d=b;d<b+9;d+) printf("%2d",ad); putchar('n'); f=1;/printf("f=%dn",f); for(e=b;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026年物流师考试知识点巩固习题
- 2025-2026年老年照护护理技术操作考核题库
- 影响价格的因素课件
- 2026酒店泳池运营市场安全标准提升及维护成本与投资回报周期分析
- 小学四年级语文复习关联词知识
- 2026 年国庆节长假户外安全宣讲课件
- 2026年养老项目可行性调研助理师职业技能等级考试试卷及答案
- 2026意大利中小企业数字化转型与市场竞争力分析报告
- 2026年开封市市本级单位招聘公益性岗位人员34名考试备考题库及答案解析
- 《社区网格化管理》课件
- 市政路面白改黑改造工程监理细则
- 第15课 规划与设计教学设计-2025-2026学年小学信息技术(信息科技)五年级第5册滇人版
- DBJ50T-542-2026 建筑机器人应用技术标准
- 1.2 1.2.1 命题与量词 课件-2026版高中数学人教B版必修第一册
- 2025版煤矿安全规程题库645道
- 农行笔试真题全套及答案
- 部编版初一语文七年级上册《咏雪》听评课记录(区公开课)
- 塑胶件培训课件
- 高中数学第九、十章统计与概率章节测试卷-2024-2025学年高一下学期数学人教A版(2019)必修第二册
- 特殊工艺过程管理制度
- CJ/T 355-2010小型生活污水处理成套设备
评论
0/150
提交评论