CreateBiTree 创建树存在错误,比如没有搞清楚怎么传递正确的参数等,POT 计算叶节点同样存在bug,比如没有判断T为NULL的情况等等。
因为错的比较多,所以重新写了份正确的,仅供参考:
#include
#include
typedef struct BiTNode
{
char data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
BiTree CreateBiTree(void)
{
char da;
BiTree T = NULL;
scanf("%c", &da);
fflush(stdin);
if (da != '。
')
{
T = (BiTNode *)malloc(sizeof(BiTNode));
T->data = da;
printf("输入%c的左子节点:", da);
T->lchild = CreateBiTree();
printf("输入%c的右子节点:", da);
T->rchild = CreateBiTree();
}
return T;
}
int POT(BiTree T)
{
if (!T)
return 0;
if (!T->lchild && !T->rchild)
return 1;
return POT(T->lchild) POT(T->rchild);
}
int GetLeafCount(BiTree T)
{
if (!T)
return -1;
if (!T->lchild && !T->rchild)
return 0;
return POT(T);
}
int main(void)
{
BiTree T = CreateBiTree();
return !printf("树叶节点个数:%d", GetLeafCount(T));
}。
全部