- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.
.
南 京 理 工 大 学
课程设计报告
作 者:
相蒙蒙
学 号:
054913221001
教学点:
苏州市职业大学
专 业:
机电一体化
题 目:
二叉树的遍历
指导者: 尚鲜莲
评阅者:
2014 年 4 月
南 京 理 工 大 学
课程设计报告评语
综合成绩:
指导者评语:
指导者(签字):
年 月 日
.
课 程 设 计 报 告 摘 要
摘要:本文主要说明如何实现二叉树的遍历。此次二叉树的遍历基于二叉树的二叉链表存储结构。遍历方式包括:前序遍历,中序遍历,后续遍历,层序遍历。其中前序遍历和后续遍历采用非递归算法实现。编程环境为VC++,除了遍历操作外,还增加了求二叉树的深度,总结点数,每层结点数,以及最近共同祖先(LCA)问题的算法。
关键词:二叉树 遍历 二叉树遍历
目 录 TOC \o 1-3 \h \z \u
1 问题描述 5
1.1 问题描述:创建二叉树并遍历 5
2、需求分析 5
3、概要设计 5
3.1.创建二叉树 5
3.2二叉树的非递归前序遍历示意图 5
3.3二叉树的后序非递归遍历示意图 6
4、数据结构设计 6
4.1二叉树结点数据类型定义 6
4.2二叉树数据类型定义 7
5、算法设计 8
5.1创建二叉树 8
5.2非递归前序遍历 8
5.3非递归后序遍历 9
5.4求二叉树的高度 10
5.5求二叉树每一层的结点数 10
5.6求两节点最近共同祖先 11
5.7算法流程图 12
6、程序测试与调试12
6.1函数之间的调用关系 12
6.2主程序 13
6.3测试数据 14
6.4测试结果 14
7、调试分析 17
8、遇到的问题及解决办法 17
9、心得体会 17
10、参考文献 18
1、问题描述
1.1问题描述:创建二叉树并遍历
基本要求:
分别运用非递归的方式完成对二叉树的先序和后序遍历
输出二叉树的高度
输出每一层的结点数
查找结点P 和结点Q的最近共同祖先
需求分析
1、本程序的功能包括二叉树的建立,二叉树的递归遍历,二叉树的非递归遍历,查询二叉树的深度,查询每层的结点数,查找两个结点的最近共同祖先,二叉树的打印。
2、程序运行后显现提示信息,等候用户输入0—6以进入相应的操作功能。
3、用户输入数据完毕,程序将输出运行结果。
4、测试数据应为字符型数据。
概要设计
3.1创建二叉树
输入数据不低于15个,用递归方法建立二叉树。
3.2二叉树的非递归前序遍历示意图
图3.2二叉树前序遍历示意图
3.3二叉树的后序非递归遍历示意图
图3.4二叉树后序遍历示意图
4、数据结构设计
4.1二叉树结点数据类型定义为:
template typename T
struct BiNode
{
BiNodeT *rchild,*lchild;//指向左右孩子的指针
T data; //结点数据信息
};
4.2二叉树数据类型定义为:
template typename T
class BiTree
{
template typename T
friend ostream operator (ostream os ,BiTreeT bt);
public:
BiTree();//无参构造函数
BiTree(int m){};//有参空构造函数
BiTree(T ary[],int num,T none);//有参构造函数
~BiTree();//析构函数
void preorder();//递归前序遍历
void inorder();//递归中序遍历
void postorder();//递归后续遍历
void levelorder();//层序遍历
int count();//计算二叉树的结点数
int depth();//计算二叉树的深度
void display(ostream os);//打印二叉树,有层次
void LevelNum();//计算每一层结点数
void PreOrder();//非递归前序遍历
void PostOrder();//非递归后序遍历
void creat(
文档评论(0)