急!一个二叉排序树算法程序,运行时有错误,大家请帮忙改改
请大家帮忙看看,谢谢…#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAX 50
typedef struct BNode{
char data;
struct BNode *lchild;
struct BNode *rchild;
}BNode;//,*BiTree;
typedef BNode *BiTree;
//插入新结点
int InsertNode(BiTree *T,char e){
BNode *f,*p;
p=*T;
while(p){
f=p;
if(p->data==e) return 0;
else if(e<p->data) p=p->lchild;
else p=p->rchild;
}
p=(BiTree)malloc(sizeof(BNode));
p->data=e;
p->lchild=NULL;
p->rchild=NULL;
if(*T==NULL) *T=p;
else if(e<f->data) f->lchild=p;
else f->rchild=p;
return 1;
}
//二叉排序树的创建
BiTree Creat(BiTree T){
//BiTree T=NULL;
T=NULL;
char e;
scanf("%c",&e);
while(e!='#'){
InsertNode(&T,e);
scanf("%c",&e);
}
return T;
}
//前序遍历二叉树
int ProTree(BiTree T){
BiTree p=T;
if(p){
printf("%c",p->data);
ProTree(p->lchild);
ProTree(p->rchild);
return 1;
}
}
//中序遍历二叉树
int MidTree(BiTree T){
BiTree p=T;
if(p==NULL) return 0;
MidTree(p->lchild);
printf("%c",p->data);
MidTree(p->rchild);
return 1;
}
void main(){
BiTree T;
Creat(T);
ProTree(T);
}