#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在传递的过程中始终是以传值的形式,这会导致错误的计算结果,应该改成传址的形式。