数据结构 课程设计报告
题 目: 二叉树的先序遍历、中序遍历、后序遍历的递归 和 非 递 归 算 法。
学生姓名: * * *
学 号: ***************
专业班级: 计算机科学与技术专业
***班
同组姓名: *****
指导教师: *****老师
设计时间: 年下学期第 周
指导老师意见: 评定成绩: 签名: 日期: |
目 录
一、课题简介 3
二、系统项目设计. . . . . . . . . . . . . . .3
三、系统实现 3
1.二叉树的建立 4
2.先序遍历 4
a.递归算法 7
b.非递归算法 7
3.中序遍历 6
a.递归算法 7
b.非递归算法 7
4.后序遍历 6
a.递归算法 7
b.非递归算法 7
5.主菜单程序 4
5.子菜单程序 4
四、系统测试 18
1.二叉树的建立 4
2.先序遍历 4
a.递归算法 7
b.非递归算法 7
2.中序遍历 6
a.递归算法 7
b.非递归算法 7
3.后序遍历 6
a.递归算法 7
b.非递归算法 7
4.主菜单程序 4
5.子菜单程序 4
五、小结 22
六、参考文献................................23
一. 课题简介:
通过这个课题设计主要掌握三种遍历方法,包括前序遍历,中序遍历和后序遍历,以及后续遍历的非递归算法。
二. 项目设计:
图1: 系统功能模块图
图2:系统存盘功能流程图
三 系统实现
系统核心代码:
1.二叉树的建立:
二叉树的遍历算法需要先建立二叉树,二叉树的建立需要建立栈和数组
栈和数组的建立:
typedef struct node /*结点定义*/
{ char data;
struct node * lchild, * rchild;
} BinTreeNode;
typedef struct{ //栈的定义
BinTreeNode * ptr;
int tag;
}StackNode;
二叉树的建立:
BinTreeNode * CreateBinTree (BinTreeNode * Tree )
/*,按先序序列建立二叉树,输入并建立一棵二叉树Tree*/
{
char c;
scanf("%c",&c);
if(c=='&') Tree = NULL;
else
{
Tree=(BinTreeNode * )malloc(sizeof(BinTreeNode));
Tree->data=c;
Tree->lchild= CreateBinTree(Tree->lchild);
Tree->rchild= CreateBinTree(Tree->rchild);
}
return(Tree);
}
2.先序遍历:
a.递归算法:
先序中序后序遍历二叉树先序遍历的递归算法:
/*二叉树的先序遍历*/
void PreOrder ( BinTreeNode *T )
{
if ( T != NULL )
{
printf("%c",T->data);
PreOrder ( T->lchild );
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论