二叉树遍历演示.doc
文本预览下载声明
XXX大学
电子与信息工程学院
数据结构课程设计报告
( 2012——2013年度第一学期)
课程名称: 数据结构课程设计
题 院 系: 计算机科学系
班 级:
姓 名:
学 号:
指导教师: 孙凌宇老师
成 绩:
2012 年 月 日
成 绩 评 定
一、 指导教师评语
二、 成绩
成绩 备注
指导教师:
日 期: 年 月 日
设计题目设计要求
1.问题描述
2.需求分析
(4)输出二叉树的叶子结点及叶子结点的个数。
(5)输出二叉树的高度。
二、概要设计主界面设计
2.存储结构设计3.系统功能设计设计
.
图2 模块调用示意图
2.
本系统共设置11个子程序,各子程序的函数名及功能说明如下:
(1) void CreateBiTree(BiTree *bt) //建立二叉树
(2) void TranslevelPrint(BiTree bt) //树状打印二叉树
(3) void Visit(char ch) //输出结点
(4) void PreOrder(BiTree root) //先序遍历二叉树
(5) void InOrder(BiTree root) //中序遍历二叉树
(6) void PostOrder(BiTree root) //后序遍历二叉树
(7) void PrePrderLeaf(BiTree root) //输出叶子结点
(8) int LeafCount(BiTree root) //输出叶子结点的个数
(9) int PostTreeDepth(BiTree root) //输出二叉树的深度
(10) void mainwork( ) //主要工作函数。操作区用户界面
(11) void main( ) //主函数。创建二叉树。调用工作区模块函数
3.
本系统11个子程序之间的主要调用关系如图3所示。图中数字是各函数的编号。
图3 系统函数调用关系图
四、详细设计.Typedef struct BiTNode
//定义二叉树结点结构
{
char data; //数据域
struct BiTNode *LChild, *RChild; //左右孩子指针域
}
2.void main()
{
printf(首先请输入二叉树的结点序列:);
printf(【提示:用@隔离】\n);
CreateBiTree(T);
printf(【零式提醒】看下面的菜单哦:\n);
mainwork ();}
(2) 建立二叉树模块
该模块是实现工作区模块的基础,工作区模块实现的8个子功能菜单都建立在此模块之上void CreateBiTree(BiTree *bt)
{ //按照先序序列建立二叉树的二叉链表
char ch;
scanf(%c,ch);
if(ch==@) *bt=NULL;
else
{
*bt=(BiTree)malloc(sizeof(BiTNode)); //生成一个新结点
(*bt)-data=ch;
CreateBiTree(((*bt)-LChild)); //生成左子树
CreateBiTree(((*bt)-RChild)); //生成右子树
}
}主要工作函数,操作区用户界面void mainwork()
{
int yourchoice;
printf( ______________________________________________________________ \n);
printf(| |\n);
printf(|------------------欢迎使用二叉树基本操作程序------------------|\n);
printf(|--- __ __ ___ __ __ __
显示全部