你这个有两种修改方式
一种是按照你老师说的,实际上就是把值传递改为址传递,也就是在函数Number中修改count直接修改的就是主函数中的count,这样也不用有什么返回值了//Number函数实现过程如下
void Number(BiTree T,int *count)
{
if(T)
{
if(T->lchild == NULL && T->rchild ==NULL)
{
(*count)++;
Number(T->lchild,count);
Number(T->rchild,count);
}
}
}
//主函数中的调用如下:
Number(T,&count);
另外一种就是,调用Number函数时不传递参数count,让其作为返回值传回主函数//Number函数实现过程如下
int Number(BiTree T)
{
int count=0;
if(T)
{
if(T->lchild == NULL && T->rchild ==NULL)
{
count++;
count+=Number(T->lchild);
count+=Number(T->rchild);
}
}
return count;
}
//主函数中的调用如下:
count=Number(T);
以上是在你的函数基础上帮你修改的。
但是我怎么感觉你的函数最大的问题不是语法问题而是逻辑问题呢
你自己在看一下逻辑问题
Number函数是为了统计叶子节点数吧?
那为什么是当T->lchild == NULL && T->rchild ==NULL进行统计呢?
难道不应该是有节点的时候进行统计吗?
我没有仔细看你的完整程序,片面理解,不知是否正确
|