改有错误的程序
#include "stdio.h"#include"stdlib.h"
typedef char TElemType;
typedef struct bitree{
TElemType data;
struct bitree *lchild,*rchild;
}BiTNode,*BiTree;
BiTree Create_Tree(){
BiTree T;
char a;
scanf("%s",&a);
if(a=='#') T=NULL;
else{
T=(BiTNode*)malloc(sizeof(BiTNode));
T->data=a;
printf("输入左孩子的值\n");
T->lchild=Create_Tree();
printf("输入右孩子的值\n");
T->rchild=Create_Tree();
}
return T;
}
Status PreOrderTraverse(BiTree T,Status( * Visit)(TElemType e))
{
if(T!=NULL){
if(Visit(T->data))
if(PreOrderTraverse(T->lchild,Visit))
if( PreOrderTraverse(T->rchild,Visit))
return 0;
}else return 1;
}
Status PrintElement(TElemType e)
{printf(e);
return 1;
}
void InOrderTraverse(BiTree T){
if(T!=NULL){
InOrderTraverse(T->lchild);
Printf("%c_ ",T->data);
InOrderTraverse(T->rchild);}
}
void PostOrderTraverse(BiTree T){
if(T!=NULL){
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
Printf("%c_ ",T->data);}
}
void LevelOrder(BTNode *bt) /*层次遍历二叉树bt*/
{ BTNode* queue[MAXSIZE];
int front,rear;
if (bt==NULL) return;
front=0; /*非循环队列*/
rear=0;
queue[rear++]=bt;
while(front!=rear)
{printf("%c",queue[front]->cdata); /*访问队首结点的数据域*/
if (queue[front]->lchild!=NULL) /*将队首结点的左孩子指针入队列*/
{ queue[rear]=queue[front]->lchild;rear++;
}
if (queue[front]->rchild!=NULL) /*将队首结点的右孩子指针入队列*/
{ queue[rear]=queue[front]->rchild; rear++;
}
front++;
} /* while */
}/* LevelOrder*/
main(){
BiTree root;
root=Create_Tree();
printf("\n先序遍历");
PreOrderTraverse(root);
printf("\n中序遍历");
InOrderTraverse(root);
printf("\n后序遍历");
PostOrderTraverse(root);
printf("\n层次遍历");
PostOrderTraverse(root);
}
此程序有几处错误,帮我改改