线索二叉树课程设计说明书模板Word下载.docx
《线索二叉树课程设计说明书模板Word下载.docx》由会员分享,可在线阅读,更多相关《线索二叉树课程设计说明书模板Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
线索化;
先序遍历;
中序遍历;
后续遍历
引言
数据结构是计算机专业重要的专业基础课程与核心课程之一,在计算机领域应用广泛,计算机离不开数据结构。
数据结构课程设计为了能使我们掌握所学习的知识并有应用到实际的设计中的能力,对于掌握这门课程的学习方法有极大的意义。
本课程设计的题目为“线索二叉树的应用”,完成将二叉树转化成线索二叉树,采用前序、中序或后序线索二叉树的操作。
本课程设计采用的编程环境为MicrosoftVisualStdio2008。
1、需求分析
为了能更熟练精准的掌握二叉树的各种算法和操作,同时也为了开拓视野,综合运用所学的知识。
为此,需要将二叉树转化成线索二叉树,采用前序、中序或后序线索二叉树,以实现线索树建立、插入、删除、恢复线索等。
1.1任务与分析
中次系统要实现对二叉树的建立,以及线索化该二叉树,同时实现对其先序、中序、后序线索话的并输出结果。
1.2测试数据
表1:
入的二叉树结点序号和数据
结点序号
数据
1
11
2
22
3
33
4
44
5
55
6
66
7
77
8
88
9
99
2开发及运行平台
开发平台:
MicrosoftVisualStudio2008
运行平台:
WindowsXP/2003/7
3概要设计
3.1ADT描述
ADTBiTree{
数据对象:
D={“树节点”};
数据关系:
R={H}
若D=∮为空,则R=∮,Tree为空树;
若D仅有一个数据元素,则R=∮;
否则R={H}详细描述如下:
D中存在唯一的称之为根的节点root,它在关系H下无前驱;
1.若D-{root}≠∮,则存在对根以外剩余元素的一个划分D1、D2......,Dm(m>
0),并对任意j≠k(1≦j≦m,1≦k≦m)有Dj∩Dk=∮;
且对任意i(1≦i≦m)唯一存在数据元素xi∈Di,有二元关系<
root,xi>
∈H。
这里描述的是从总节点到各个子树根节点xi的边。
2.对应于D-{root}的划分,关系集H-{<
root,x1>
,<
root,x2>
,......<
root,xm>
}也有唯一的划分H1、H2......Hm(m>
0),并且对任意的j≠k(1≦j≦m,1≦k≦m)有Hj∩Hk=∮,对任意的i(1≦i≦m),Hi是Di上的二元关系,则(Di,{H})是一颗树,且是root的子树。
基本操作:
voidcreat();
//创建一个二叉树。
voidinorder();
//中序便利。
voidThTree:
:
threpreorder();
//先序遍历二叉树。
threinorder();
//中序遍历二叉树。
threpostorder();
//后序遍历二叉树。
destroy();
//删除线索二叉树。
intmain();
//主函数。
}
3.2程序模块结构
图2程序模块结构
3.2.1结构体定义
书的结构体定义如下:
structThreNode//定义结点结构体
{
ElemTypedata;
ThreNode*lch;
ThreNode*rch;
intltag,rtag;
};
3.3 各功能模块
新建模块:
voidThTree:
creat()新建二叉树并储存。
树类模块:
voidThTree()定义书的结点,孩子以及各成员函数。
先序遍历模块:
threpreorder()对树进行先序线索遍历。
中序遍历模块:
threinorder()对树进行中序线索遍历。
后序遍历模块:
threpostorder()对树进行后序线索遍历。
删除模块:
destroy():
删除所有节点。
4 详细设计
4.1结构体定义
树的结构体定义如下:
ThreTypedata;
4.2初始化
构造函数初始化变量,定义双亲结点和左右标志域以及根结点:
creat()//建立二叉树
ThreNode*q,*s[20];
ElemTypex;
inti,j;
cout<
<
"
\n请按二叉树的层序自上而下自左至右顺序组织数据"
endl;
\n每次输入结点的序号和数据,假设根结点值是11;
\n那么输入应该是:
111"
\ni,x="
;
cin>
>
i>
x;
while(i!
=0&
&
x!
=0)
{
q=newThreNode;
//产生一个接点
q->
data=x;
q->
lch=NULL;
rch=NULL;
ltag=0;
rtag=0;
//左右标志域
s[i]=q;
if(i==1)root=q;
//q为根接点
else{j=i/2;
if((i%2)==0)s[j]->
lch=q;
elses[j]->
rch=q;
//j为双亲结点编号
}
cin>
}
4.3新建操作
ThreNode*q,*s[20];
cout<
cin>
while(i!
threpreorder(ThreNode*p,ThreNode*pre)//先根线索化二叉树
{if(p!
=NULL)
{cout<
p->
data<
"
if(p->
lch==NULL){p->
lch=pre;
p->
ltag=1;
}
pre=p;
if(p->
ltag==0)threpreorder(p->
lch,pre);
threpreorder(p->
rch,pre);
4.4、录入信息
intmain()
intk;
ThTreeroot0;
do{cout<
\n\n"
\n\n1.建立二叉树"
\n\n2.中序递归线索二叉树"
\n\n3.先序线索化二叉树"
\n\n4.后续线索化二叉树"
\n\n5.结束程序运行"
\n\n请输入您的选择:
k;
switch(k)
4.5先序遍历线索化操作
}
threpreorder(p->
4.6中序遍历线索化操作
threinorder(ThreNode*p,ThreNode*pre)//中根线索化二叉树
if(p!
threinorder(p->
{p->
p->
if(pre!
pre->
rch==0)
{
pre->
rch=p;
rtag=1;
pre=p;
4.7后续遍历线索化操作
threpostorder(ThreNode*p,ThreNode*pre)//后根线索化二叉树
threpostorder(p->
threpostorder(p->
4.8主函数
{case1:
\n建立二叉树:
root0.creat();
}break;
case2:
\n中序递归线索二叉树的结果:
root0.threinorder();
}break;
case3:
\n先序递归线索二叉树的结果:
root0.threpreorder();
}break;
case4:
\n后续递归线索化二叉树的结果:
root0.threpostorder();
}while(k>
k<
5);
_getch();
return0;
5调试分析
5.1测试数据
测试数据见表1.
5.2调试问题
在测试过程中没有给测试者提供相关的录入信息要求,导致录入要求不合格,程序不能正常运行,经过添加了录入信息提示之后就解决了这个问题。
5.3算法时间复杂度
录入:
时间复杂度为O(n);
先根线索化二叉树:
时间复杂度为O(n);
中根线索化二叉树:
后根线索化二叉树:
删除结点:
时间复杂度为O(n);
5.4经验和体会
在本次课程设计中主要是对图的数据结构操作,所有刚开始对知识不是很熟悉操作起来有一定难度,容易在程序的关键地方但经过翻阅教材能较好的解决问题。
6 测试结果
6.1录入信息
图3录入信息界面
6.2新建模块
图5查询景点信息界面
6.3中序递归线索化模块
图6中序递归线索化界面
6.4先序递归线索化模块
图7先序递归线索化界面
6.5后序递归线索化模块
图8后序递归线索化界面
结论
本次课程设计“二叉树的线索化”按照任务书相应的要求成功的完成了任务,由于本课程设计涉及先序、后序、中序的线索化,以及相应的相关插入删除的操作,因此对算法的设计以及相关函数的调用要求很高,需要通过反复的查看相关书籍才能完成。
致谢
在本次课程设计过程中,首先感谢辅导老师周立章,在数据结构课堂上为课程设计需要的前期知识打下了基础,在课程设计过程中抽出休息时间来做相应的课程设计指导。
同时在这次课程设计中,也要感谢许多乐意同学对我不懂的地方的指导和耐心讲解。
参考文献
[1]严蔚敏,吴伟民.数据结构.北京.清华大学出版社出版。
[2]严蔚敏,吴伟民.数据结构题集(C语言版).北京.清华大学出版社.2003年5月。
[3]杨秀金,数据结构(C++版).北京.高等教育出版社.2009年4月。
[4]朱战立.数据结构(C++语言描述)(第二版本).北京.高等出版社出版.2004年4月。
[5]胡学钢.数据结构(C语言版).北京.高等教育出版社.2004年8月。
[6]杨金秀.数据结构(C语言版).西安.电子科技大学出版社.2004年8月。
西华大学本科课程设计说明书规范化要求
第一条 说明书格式
说明书(或计算书)手写、打印均可,需采用统一的课程设计用纸或模版。
纸张大小A4,上下右各留2.2cm,左边距2.5cm的页边距。
手写时用黑墨水工整书写;
打印:
1.5倍行距,正文字体使用小四号宋体,小标题使用小四号黑体,大标题使用四号黑体,章节标题使用小三号黑体、居中。
页眉按“
XXXXXX(课程设计题目)”(5号)注写,但封面不能有页眉;
页脚居中。
第二条课程设计说明书字数要求
按学院根据本学科特点确定的字数。
第三条装订
课程设计资料装订顺序为:
(1)封面
(2)任务书(由指导教师填写)
(3)目录、摘要及关键词
摘要是说明书内容的简短陈述,一般200字左右。
关键词是反映论文主题内容的通用技术词汇,一般为3~5词,并出现在摘要中。
(4)正文(含引言及正文内容)
(5)结论
(6)致谢
(7)参考文献(不少于6篇)
参考文献必须是学生在课程设计中真正阅读过和运用过的,文献按照在正文中的出现顺序编号排列。
各类文献的标注格式如下:
著作:
[序号]著者.译者.书名.出版社.出版时间.引用部分起止页
期刊:
[序号]著者.译者.文章题目.期刊名.年份.卷号(期刊数).引用部分起止页
会议论文集:
[序号]作者.译者.文章名.文集名.会址.开会年.出版者.出版时间.引用