请问可以帮我看下下面这串代码有什么错误吗?
我输入1 2 3 4 5
但是运行不出结果,像是陷入递归出不来了一样
#include <stdio.h>
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void BuildBiTree(BiTree T)
{
char ch;
scanf("%c",&ch);
if(ch=='\n')
T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
T->data=ch;
BuildBiTree(T->lchild);
BuildBiTree(T->rchild);
}
}
//统计二叉树的叶子结点个数
/*int LeafNumber(BiTree T)
{
static int count=0;
BiTNode *p=T;
if(!p->lchild&&!p->rchild)
count++;
LeafNumber(p->lchild);
LeafNumber(p->rchild);
return count;
}*/
int LeafNumber(BiTree T)
{
if (T == NULL)
return 0;
else if (!T->lchild && !T->rchild)
return 1;
else
return LeafNumber(T->lchild) + LeafNumber(T->rchild);
}
int main()
{
BiTree T;
T=(BiTree)malloc(sizeof(BiTNode));
T->data='\0';
T->lchild=NULL;
T->rchild=NULL;
BuildBiTree(T);
printf("%d",LeafNumber(T));
return 0;
}