课题名:建立二叉树,并对树进行操作
系别:信息与计算科学系
年级:2009级
专业:数学与应用数学
班级:一班
学号:2009031116、2009031112、2009123123、2009031102、2009031110 姓名:唐永桥、杨文升、李兵、陈丕权、范庆勇
指导老师:李学勇
2011-5-10
目录
1、运行环境、开发工具 (3)
2、需求分析 (4)
success是什么意思
2.1设计目标 (4)
公主日记1
2.2 相关知识 (4)
2、概要设计 (9)
2.1主要数据存储结构设计 (9)
2.2模块的划分及其功能 (9)
3、详细设计 (10)
3.1存储结构的建立由scanf()函数实现 (10)
3.2重要函数 (11)
3.3程序相关分析 (11)
3.4结构体和全局变量定义 (11)
3.5程序清单 (12)
4、测试数据及结果分析 (18)
结束语 (20)
6、参考文献 (21)
[1]《数据结构》(C语言版),严蔚敏,清华大学出版社,2003. (21)
1、运行环境、开发工具运行环境:VC++ 6.0
开发工具:电脑
2、需求分析
2.1设计目标
小学语文课程标准二叉树是形象的说既树中每个节点最多只有两个分支,它是一个重要的数据类型。可以运用于建立家谱,公司所有的员工的职位图,以及各种事物的分类和各种机构的职位图表。
二叉树是通过建立一个链式存储结构,达到能够实现前序遍历,中序遍历,后序遍历。以及能够从输入的数据中得知二叉树的叶子节点的个数,二叉树的深度。在此,二叉树的每一个结点中必须包括:值域,左指针域,右指针域。
2.2 相关知识
1、status CreateBiTree(BiTree *T)magna
{// 先序创建二叉树
TelemType ch;
scanf("%c",&ch);
if(ch==ENDFLAG) *T=NULL;
el {
if(!(*T=(BiTNode *)malloc(sizeof(BiTNode))))
{
printf("\nOut of space.");
getch();
exit(0);
}
(*T)->data=ch; //生成根结点
CreateBiTree(&((*T)->lchild));//左子树
CreateBiTree(&((*T)->rchild));//右子树
}
return OK;
}
TelemType的作用是输入n各任意的字符,而且在输入n个字符后,必须输入N=1 个0,才能够得到本程序所有能够实现的功能。T=Null是将二叉树置为空。
if(!(*T=(BiTNode *)malloc(sizeof(BiTNode))))//采用动态申请结点的方式,不仅实现起来方便,而且还节省大量的存储空间。
(*T)->data=ch; //生成根结点
CreateBiTree(&((*T)->lchild));//左子树淬火是什么意思
CreateBiTree(&((*T)->rchild));//右子树
does的用法2、前序遍历:先访问根结点,再访问左子树,最后访问右子树。
具体实现如下:
enterpri
status PreOrderTraver(BiTree T)
{
amountif(T)
{
printf("%c",T->data);
PreOrderTraver(T->lchild);
PreOrderTraver(T->rchild);
}
feet是什么意思return OK;
音乐用英语怎么说
}
3、求叶子结点的个数:用m变量表示叶子结点的总个数。
当树为空是此时讨论叶子结点个数无意义;
当树非空时分为:一、左右子树都不存在时,m自加1,m的值就为1,即叶子结点的个数为1;
二、左右子树存在,就用分别访问出左右子树中叶子结点的个数,两者相加就为二叉树叶子结点的个数。
具体实现如下:
//求二叉树的叶结点个数
status NumberLeaves(BiTree T)
{//先序遍历得到叶结点的数目
//m=0;
if(T)
{
if(T->lchild==NULL&&T->rchild==NULL) m++;
NumberLeaves(T->lchild);
NumberLeaves(T->rchild);
}