用c语言打印一个树不是一个数,用C语言编写创建一个树并且找出树叶结点的个数不知道哪里错了...

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));

}。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值