数据结构课程设计--按层次遍历二叉树
- 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)二叉树采用二叉链表作为存储结构。
(2)按严蔚敏《数据结构习题集(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所指定的格式)指定格式如下:
C
F
E
A
D
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< q.pop(); if(p->leftchild!=NULL){q.push(p->leftchild);} //左子树非空,入队