请教一下这个为什么无法生成
#include<stdio.h> #include<conio.h>
#include<stdlib.h>
#define OK 1
#define OVERFLOW -2
#define ERROR -1
#define MAX_TREE_SIZE 100 // 二叉树的最大结点数
typedef int SqBiTree[MAX_TREE_SIZE]; // 0号单元存储根结点
SqBiTree bt; typedef struct BiTNode{ char data;
struct BiTNode *lchild,*rchild;//左右孩子指针 }BiTNode,*BiTree;
//先序建立二叉树
int CreateBiTree(BiTree &T){
//按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树
//构造二叉链表表示的二叉树T
char ch;
scanf(&ch);
if(ch=='0') T=NULL;
else{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit(OVERFLOW);
T->data=ch;
CreateBiTree(T->lchild );//构造左子树
CreateBiTree(T->rchild );//构造右子树 }
return OK; }
int PreOrderTraverse(BiTree T,int(*Visit)(char e)){
//采用二叉链表存储结构,Visit是对数据元素操作的应用函数
//先序遍历二叉树T的递归算法,对每个数据元素调用函数Visit
if(T){ if(Visit(T->data ))
if(PreOrderTraverse(T->lchild ,Visit))
if(PreOrderTraverse(T->rchild ,Visit))
return OK;
return ERROR; }else return OK; }
//显示
int PrintElement(char e){
printf("%c\n",e);
return OK; }
int main(){
BiTNode *T;
CreateBiTree(T);
PreOrderTraverse(T,PrintElement);
return 0; }