数据结构课程设计--按层次遍历二叉树
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计--按层次遍历二叉树学号:
题目按层次遍历二叉树学院计算机科学与技术专业计算机科学与技术
班级
姓名
指导教师
2013年6月20日
1
1问题描述及要求 (4)
1.1问题描述 (4)
1.2任务要求.................................. 4 2 开发平台及所使用软件.............................. 4 3 程序设计思路.. (5)
3.1二叉树存储结构设计 (5)
3.2题目算法设
计 (5)
3.2.1 建立二叉树 (5)
3.2.2 遍历二叉树 (5)
3.3.3 按要求格式输出已建立的二叉
树 (6)
3.3 测试程序................................ 6 4 调试
报告.................................... 6 5 经验和体会.................................. 6 6
源程序清单及运行结果 (7)
6.1 源程序清单 (7)
6.2 运行结果................................ 9 7 参考文献...................................
10 本科生课程设计成绩评定表 (11)
2
课程设计任务书
学生姓名:专业班级:计科ZY1102班指导教师:工作单位:计算机科学系题目: 按层次遍历二叉树
初始条件:
编写按层次顺序(同一层自左至右)遍历二叉树的算法。
(1)二叉树采用二叉链表作为存储结构。
⑵按严蔚敏《数据结构习题集(C语言版)》p44面题6.69所指定的格式输出建立的二叉树。
(3)输出层次遍历结果。
(4)自行设计测试用例。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
课程设计报告按学校规定格式用A4纸打印(书写),并应包含如下内容:1.问题描述
简述题目要解决的问题是什么。
2. 设计
存储结构设计、主要算法设计(用类C/C++语言或用框图描述)、测试用例设计;
3. 调试报告
调试过程中遇到的问题是如何解决的; 对设计和编码的讨论和分析。 4. 经验和体会(包括对算法改进的设想)
5. 附源程序清单和运行结果。源程序要加注释。如果题目规定了测试数据,则运行结
果要包含这些测试数据和运行输出。
说明:
1. 设计报告、程序不得相互抄袭和拷贝; 若有雷同,则所有雷同者成绩均为0 分。
2. 凡拷贝往年任务书或课程设计充数者,成绩一律无效,以0 分记。时间安排:
1(第17周完成,验收时间由指导教师指定
2(验收地点:实验中心
3(验收内容:可执行程序与源代码、课程设计报告书。
指导教师签名:2013年6月14日系主任(或责任教师)签名:年月曰
3
数据结构课程设计
--- 按层次遍历二叉树
1问题描述及要求
1.1问题描述
编写按层次顺序(同一层自左至右)遍历二叉树的算法,并将二叉树按指定格式输出。(题集p44面题6.69所指定的格式)指定格式如下:
B
图一: 指定输出格式
1.2 任务要求
编写按层次顺序(同一层自左至右) 遍历二叉树的算法。
(1) 二叉树采用二叉链表作为存储结构。
(2) 按题集p44面题6.69所指定的格式输出建立的二叉树
(3) 输出层次遍历结果。
(4) 测试用例自己设计。
2 开发平台及所使用软件
Windows 7.0 , Visual Studio2010
4
3 程序设计思路
3.1 二叉树存储结构设计
struct BinTreeNode // 二叉树用二叉链表存储
{
char data; // 二叉树结点值为字符型
BinTreeNode* leftchild; // 左孩子指针
BinTreeNode*rightchild; // 右孩子指针
}
3.2 题目算法设计
3.2.1 建立二叉树
void BinTree::creatBinTree(istream& in,BinTreeNode*&subTree) // 通过输入流in 建立二叉树{
char item;
cin.get(item);
if(item!=' ')
{
subTree=new BinTreeNode(item); creatBinTree(in,subTree->leftchild); creatBinTree(in,subTree->rightchild);
}
else
{
subTree=NULL;
}
};
3.2.2 遍历二叉树
void BinTree::levelOrder(BinTreeNode* subTree) // {
queue
BinTreeNode*p=subTree;
q.push(p);
while(!q.empty()) // 若树非空
{
p=q.front();cout<
if(p->rightchild!=NULL){q.push(p->rightchild);}
}
};
333按要求格式输出已建立的二叉树
按层次序遍历二叉树左子树非空,入队