用C语言编写二叉树的建立与遍历
1.对题目要有需求分析 
在需求分析中,将题目中要求的功能进行叙述分析,并且设计解决此问题的数据存储结构,设计或叙述解决此问题的算法。 
给出实现功能的一组或多组测试数据,程序调试后,将按照此测试数据进行测试的结果列出来。 
如果程序不能正常运行,写出实现此算法中遇到的问题和改进方法; 
2.对题目要有相应的源程序 
源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。(注释量占总代码的四分之一) 
程序能够运行,要有基本的容错功能。尽量避免出现操作错误时出现死循环; 
3.最后提供的主程序可以象一个应用系统一样有主窗口,通过主菜单和分级菜单调用课程设计中要求完成的各个功能模块,调用后可以返回到主菜单,继续选择其他功能进行其他功能的选择。 
二叉树的建立与遍历 
[问题描述] 
  建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。
[基本要求] 
  从键盘接受输入,以二叉链表作为存储结构,建立二叉树,并对其进行遍历(先序、中序、后序),将遍历结果打印输出。 
以下是我的数据结构实验的作业:肯定好用,里面还包括了统计树的深度和叶子数!记住每次做完一个遍历还要重新输入你的树哦! 
#include "stdio.h" 
#include "string.h" 
#define NULL 0 
typedef struct BiTNode{ 
char data; 
struct BiTNode *lchild,*rchild; 
}BiTNode,*BiTree; 
BiTree Create(BiTree T){ 
char ch; 
ch=getchar(); 
if(ch=='#') 
T=NULL; 
else{ 
if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) 
printf("Error!"); 
T->data=ch; 
T->lchild=Create(T->lchild); 
T->rchild=Create(T->rchild); 
} 
return T; 
} 
void Preorder(BiTree T){ 
if(T){ 
printf("%c",T->data); 
Preorder(T->lchild); 
Preorder(T->rchild); 
} 
} 
int Sumleaf(BiTree T){ 
int sum=0,m,n; 
if(T){ 
if((!T->lchild)&&(!T->rchild)) 
sum++; 
m=Sumleaf(T->lchild); 
sum+=m; 
n=Sumleaf(T->rchild); 
sum+=n; 
} 
return sum; 
}先序中序后序遍历二叉树 
void zhongxu(BiTree T){ 
if(T){ 
zhongxu(T->lchild); 
printf("%c",T->data); 
zhongxu(T->rchild); 
} 
} 
void houxu(BiTree T){ 
if(T){ 
houxu(T->lchild); 
houxu(T->rchild); 
printf("%c",T->data); 
} 
} 
int Depth(BiTree T){ 
int dep=0,depl,depr; 
if(!T) dep=0; 
else{ 
depl=Depth(T->lchild); 
depr=Depth(T->rchild); 
dep=1+(depl>depr?depl:depr); 
} 
return dep; 
} 
main(){ 
BiTree T; 
int sum,dep; 
T=Create(T); 
Preorder(T); 
printf("\n"); 
zhongxu(T); 
printf("\n"); 
houxu(T); 
printf("\n"); 
sum=Sumleaf(T); 
printf("%d",sum); 
dep=Depth(T); 
printf("\n%d",dep); 
} 
在Turbo C的环境下,先按Ctrl+F9运行程序,此时就是建立二叉树的过程,例如输入序列ABC##DE#G##F###(其中的“#”表示空,并且输入过程中不要加回车,因为回车也有对应的ASCII码,是要算字符的,但是输入完之后可以按回车退出),然后再按ALT+F5显示用户界面,这时候就能够看到结果了。 
另外你必须会手动建立一棵二叉树,保证你输入的序列能构成一棵二叉树,否则你怎么输入,按最后按多少回车程序也不会结束! 
下面是我举的例子的二叉树的图形表示(画的不好,别见笑),如果可能,把你想建立的二叉树也发上来!
使用标准C语言编写创建有序二叉树的算法
最佳答案
#include<stdlib.h>
#include<math.h>
#define NULL 0
#define maxsize 100
#define LEN sizeof(struct student)
typedef struct student
{struct student *lchild,*rchild;
char data;
}*STU;
STU stree_creat(char *s,int k)
{STU p;
if(s[k]=='\0'||k>maxsize)
      return NULL;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。