- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构》课程设计报告
题目:二叉树的遍历 日期: 2009-12-22
年级: 班级:
姓名: 学号:
一.实习目的
更好的了解二叉树的中序、前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现流程及操作步骤。加深理论知识,提高实践能力。
二.问题描述
二叉树的中序、前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现,建树的实现。
三.概要设计
1.创建二叉树
2.二叉树的递归遍历算法(前、中、后)
3.二叉树的层次遍历算法
4.二叉树的非递归遍历算法(前、中、后)
5.退出
以选择面板开始,显得更为清晰。其中3,4,5,6,8为添加内容,有助于更好的了解二叉树。
四.详细设计
1.创建二叉树
(1)定义二叉树结点值的类型为字符型。
(2)结点个数不超过10个。
(3)按先序次序输入,构造二叉链表表示的二叉树T,空格表示空树。
2.二叉树的递归遍历算法(前、中、后)
DLR
(1)访问根结点。
(2)先序遍历根结点的左子数。
(3)先序遍历根结点的右子数。
LDR
(1)先序遍历根结点的左子数。
(2)访问根结点。
(3)先序遍历根结点的右子数。
LRD
(1)先序遍历根结点的左子数。
(2)先序遍历根结点的右子数。
(3)访问根结点。
3.二叉树的层次遍历算法
(1)访问该元素所指结点。
(2)若该元素所指结点的左右孩子结点非空,则该元素所指结点的左孩子指针和右孩子指针顺序入队。
4.二叉树的非递归遍历算法(前、中、后)
(1)非递归的先序遍历算法
a.访问结点的数据域。
b.指针指向p的左孩子结点。
c.从栈中弹出栈顶元素。
d.指针指向p的右孩子结点。
(2)非递归的中序遍历算法
a.指针指向p的左孩子结点。
b.从栈中弹出栈顶元素。
c.访问结点的数据域。
d.指针指向p的右孩子结点。
(3)非递归的后序遍历算法
bt是要遍历树的根指针,后序遍历要求在遍历完左右子树后,再访问根。
需要判断根结点的左右子树是否均遍历过。
可采用标记法,结点入栈时,配一个标志tag一同入栈
(1:遍历左子树前的现场保护,2:遍历右子树前的现场保护)。
首先将bt和tag(为1)入栈,遍历左子树;
返回后,修改栈顶tag为2,遍历右子树;最后访问根结点。
5.退出
五.测试数据与分析
六.源代码
#include iostream.h
#include stdlib.h
#include stdio.h
typedef char ElemType;//定义二叉树结点值的类型为字符型
const int MaxLength=10;//结点个数不超过10个
typedef struct BTNode{
ElemType data;
struct BTNode *lchild,*rchild;
}BTNode,* BiTree;
void CreateBiTree(BiTree T){//按先序次序输入,构造二叉链表表示的二叉树T,空格表示空树
// if(T) return;
char ch;
ch=getchar(); //不能用cin来输入,在cin中不能识别空格。
if(ch== ) T=NULL;
else{
if(!(T=(BTNode *)malloc(sizeof(BTNode)))) coutmalloc fail!;
T-data=ch;
CreateBiTree(T-lchild);
CreateBiTree(T-rchild);
}
}
void PreOrderTraverse(BiTree T){//先序遍历
if(T){
coutT-data ;
PreOrderTraverse(T-lchild);
PreOrderTraverse(T-rchild);
}
}
void InOrderTraverse(BiTree T){//中序遍历
if(T){
InOrderTraverse(T-lchild);
coutT-data ;
InOrderTraverse(T-rchild);
}
}
void PostOrderTraverse(BiTree T){//后序遍历
if(T){
PostOrderTraverse(T-lchild);
PostOrderTraverse(T-rchild);
coutT-data ;
}
}
void LevelOrderTraverse(BiTree T){//层序遍历
BiTree Q[MaxLength];
int front=0,
您可能关注的文档
最近下载
- 2025青海公司所属华电(格尔木)能源有限公司面向华电系统内外招聘180人笔试参考题库附答案解析.docx VIP
- 意大利语基础单词与日常用语修订稿.docx VIP
- 2025南方电网文山供电局招聘短期项目制用工(35人)笔试模拟试题及答案解析.docx VIP
- 中文版新视线意大利语中级练习手册.docx VIP
- 山东科学技术版劳动实践指导手册一年级全册教学设计教案.pdf
- 山东科学技术版劳动实践指导手册二年级全册教学设计教案.doc
- 2025至2030年中国淫羊藿提取物行业市场竞争态势及发展前景研判报告.docx
- chiavi del Quaderno degli esercizi新视线意大利语初级练习册答案.pdf VIP
- 主、被动防护网施工组织设计方案.docx VIP
- 山东科技出版社劳动实践指导手册二年级第1课清洁与卫生小件衣物清洗洗内衣 教案.doc VIP
文档评论(0)