#include <stdio.h>
#include<stdlib.h>
typedef struct BiTNode
{
int data;
struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
void BuildBiTree(BiTree T)
{
char ch;
scanf("%c",&ch);
if(ch=='#')
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;
if(!T->lchild&&!T->rchild)
count++;
count+=LeafNumber(T->lchild);
count+=LeafNumber(T->rchild);
return count;
}*/
int LeafNumber(BiTree T)
{
if (T == NULL)
return 0;
else if (T->lchild==NULL && T->rchild==NULL)
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;
}
百思不得其解,为什么就是不对呢,无论怎么输结果都是1