二叉排序树的构造与运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书
学生姓名:专业班级班
指导教师:夏红霞工作单位:计算机科学与技术学院
题目: 二叉排序树的构造与运算
课程设计要求:
1、熟练掌握基本的数据结构;
2、熟练掌握各种算法;
3、运用高级语言编写质量高、风格好的应用程序。
课程设计任务:
1、系统应具备的功能:
(1)建立二叉排序树
(2)中序遍历二叉排序树并输出排序结果
2、数据结构设计;
3、主要算法设计;
4、编程及上机实现;
5、撰写课程设计报告,包括:
(1)设计题目;
(2)摘要和关键字;
(3)正文,包括引言、需求分析、数据结构设计、算法设计、程序实现及测试、不足之处、设计体会等;
(4)结束语;
(5)参考文献。
时间安排:2010年7月5日-9日(第19周)
7月5日查阅资料
7月6日系统设计,数据结构设计,算法设计
7月7日 -8日编程并上机调试
7月9日撰写报告
7月10日验收程序,提交设计报告书。
指导教师签名: 2010年7月4日
系主任(或责任教师)签名: 2010年7月4日
二叉排序树的构造与运算
摘要:该程序主要部分有:①数据的输入;②将输入的数据构造成一个二叉排序树;
③将构造好的二叉排序树用中序遍历的方法输出;④用中序遍历输出最终结果。
关键字:二叉排序树、中序遍历、数据的输入输出
1.引言:现今,数据的排序过程在很多方面都有运用,大量数据的排序在很多行业都有很大的作用,二叉排序树能更为直观的表现排序过程,而用中序遍历二叉排序树的结果就是一组由小到大依次排列的数据,此过程能检验构造二叉排序树的过程是否正确。
2.需求分析:①二叉排序树能直观的反映排序的过程,能更好的解释排序过程;②大量数据的排序过程在多个行业都有广泛的应用;③用户能通过中序遍历的过程检测排序是否正确。
3.数据结构设计
typedef struct bnode
{
int data;
s truct bnode *left , *right ;
} btree ; //构造一个二叉树
4. 算法设计
4.1输入数据建立一个二叉树
void creatTree(btree **b)
{
int x ;
btree *s ;
*b = NULL ;
while(x !=0 )
{
printf("请输入数据(输入0结束): ");
scanf("%d",&x);
if(x!=0)
{
s = (btree *)malloc(sizeof(btree)) ;
s->data = x ;
s->left = NULL ;
s->right = NULL ;
insert( b , s );
}
else break;
}
}
4.2与4.1相结合构造一个二叉排序树
void insert(btree **b , btree *s)
{
if(*b==NULL) *b = s ;
else if((*b)->data == s->data)
insert(&(*b)->left , s);
else if(s->data > (*b)->data)
insert(&(*b)->right , s);
else if(s->data < (*b)->data)
insert(&(*b)->left , s);
}
4.3按中序遍历的顺序输出二叉排序树
void Print(btree * p)
{
if(p!=NULL)
{
Print(p->left);
printf( "%d",p->data);
if(p->left!=NULL)
printf( "\t %d 的左结点:%d ",p->data,p->left->data);
else
printf( "\t %d 的左结点=NULL",p->data);
if(p->right!=NULL)
printf( "\t %d 的右结点:%d ",p->data,p->right->data);
else
printf( "\t %d 的右结点=NULL",p->data);
printf( "\n");
Print(p->right);
}
}
void InOrder(btree *b)
{
if (b!=NULL)
{
InOrder(b->left );
printf("%d ",b->data);
InOrder(b->right );
}
}
5.程序运行结果
5.1该程序可输入任意个数的数据,输入一个数据后点击ENTER输入下一个,直到输入为0为止。
5.2输入完毕后程序自动运行建立二叉排序树并用中序遍历的方式输出结果。
6. 设计体会
这个实验与其他实验相比相对简单,不需要写出界面实现功能也较少,所以报告不多。但我觉得这个实验是非常贴近数据结构所讲的内容,实验中充分运用了二叉树、二叉排序树、中序遍历等我们在数据结构课上讲到的概念,将他们运用到实际问题中,不仅能让算法过程更加清晰,还能更简单的将问题得到解决。我觉得这个实验是将课堂学习与实践结合在一起的直接例子,让我知道课本上的知识是如何在实际中运用的。
同时,通过这次课程设计,我读了一些书籍,对数据结构有了更多的了解,对C语言的编程也有了新的体会。我还了解到算法对程序设计的重要性,好的算法能写出更高效的程序,编码过程也更加轻松。
参考文献:
[1] 严蔚敏吴伟民编著《数据结构》清华大学出版社2001年1月
[2] 高一凡编著《数据结构》算法实现及解析西安电子科技大学出版社