创建和遍历一颗普通的二叉树
#include "stdio.h"
#include "stdlib.h"
typedef char Elemtype ;
typedef struct BiTNode{
Elemtype data;
struct BiTNode *lchild;
struct BiTNode *rchild;
}BiTNode,*BiTtree;
//前序的方法创建一棵二叉树
void CreateBiTtree(BiTtree *T){
char c;
scanf("%c",&c);
if(' '==c){
(*T)=NULL;
}
else{
(*T)=(BiTNode*)malloc(sizeof(BiTNode));
(*T)->data=c;
CreateBiTtree(&(*T)->lchild);
CreateBiTtree(&(*T)->rchild);
}
}
//访问数据
visit(char c,int level){
printf("%c在第%d层。\n",c,level);
}
//前序遍历二叉树
void qianxubianli(BiTtree T,int level){
if(T){
visit(T->data,level);
qianxubianli(T->lchild,level+1);
qianxubianli(T->rchild,level+1);
}
}
//中序遍历二叉树
void zhongxubianli(BiTtree T,int level){
if(T){
zhongxubianli(T->lchild,level+1);
visit(T->data,level);
zhongxubianli(T->rchild,level+1);
}
}
//后序遍历二叉树
void houxubianli(BiTtree T,int level){
if(T){
houxubianli(T->lchild,level+1);
houxubianli(T->rchild,level+1);
visit(T->data,level);
}
}
void main(){
int level=1;
BiTtree T=NULL;
CreateBiTtree(&T);
qianxubianli(T,level);
}