二叉树计算叶子节点c语言报告,求教一个算法题。二叉树叶子结点。。

#include "Stdio.h"

#include "Conio.h"

typedef struct btnode

{

int num ;

struct btnode *lchild,*rchild ;

}

BTNode ;

typedef struct btree

{

struct btnode *ROOT ;

}

BTree ;

void creatBT(BTree*bt)

{

bt->ROOT=NULL ;

}

void makeBT(BTree*btree,int number,BTree*lt,BTree*rt)

{

BTNode *bt=(BTNode *)malloc(sizeof(BTNode));

bt->num=number;

bt->lchild=lt->ROOT;

bt->rchild=rt->ROOT;

lt->ROOT=rt->ROOT=NULL ;

btree->ROOT=bt ;

}

void leaf(BTNode *T,int *count)

{

if(T)

{

leaf(T->lchild,count);

if((T->lchild==NULL)&&(T->rchild==NULL))

(*count)++;

leaf(T->rchild,count);

if((T->lchild==NULL)&&(T->rchild==NULL))

(*count)++;

}

}

int main(void)

{

BTree a,b,c,d ;

int num=0;

creatBT(&a);

creatBT(&b);

creatBT(&c);

creatBT(&d);

makeBT(&b,2,&d,&d);

makeBT(&c,3,&d,&d);

makeBT(&a,1,&d,&d);

leaf(a.ROOT,&num);

printf("%d",num);

getch();

return 0 ;

}

楼主您的程序仍有问题,刚才没看清,上面的程序是我改后针对您的那断程序测试的,您再看下有错误没,

您的错误在于:函数形参count在传递的过程中始终是以传值的形式,这会导致错误的计算结果,应该改成传址的形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值