主题:[讨论]递归函数的问题
int nodes(Bnode *root)
{
int num1,num2;
if(root==NULL)return(0);
else
{
num1=nodes(root->lchild);
num2=nodes(root->rchild);
return(num1+num2+1);/*加1是因为要算上根节点*/
}
return (num1+num2);
}
int nodeO(Bnode *root)
{
int num1,num2;
if(root==NULL)return(0);
else
{
num1=nodeO(root->lchild);
num2=nodeO(root->rchild);
if(root->lchild==NULL&&root->rchild==NULL)
return(num1+num2+1);/*加1是因为要算上根节点*/
else return(num1+num2);
}
}
int node1(Bnode *root)
{
int num1,num2;
if(root==NULL)return(0);
else if( (root->lchild!=NULL&&root->rchild==NULL) ||(root->lchild==NULL&&root->rchild!=NULL))
return(1);
else
{
num1=node1(root->lchild);
num2=node1(root->rchild);
return(num1+num2+1 );/*加1是因为要算上根节点*/
}
}
int node2(Bnode *root)
{
int num1,num2;
if(root==NULL)return(0);
else
{
num1=node2(root->lchild);
num2=node2(root->rchild);
if(root->lchild!=NULL&&root->rchild!=NULL)
return(num1+num2+1);/*加1是因为要算上根节点*/
else return(num1+num2);
}
}
/*以上是二叉树算结点的算法, nodes()递归算法求节点总数求出总结点的个数,在这里我很糊涂了,node0( )、node1( )、node2( )分别求出度为0、1、2结点的个数,里面的参数都是int num1、int num2这个两个参数,这两个参数都没有被确定赋初值,那么函数返回的值应该是一个不确定的值吧?是不是递归程序中的变量不同,请帮忙理解。谢谢*/
{
int num1,num2;
if(root==NULL)return(0);
else
{
num1=nodes(root->lchild);
num2=nodes(root->rchild);
return(num1+num2+1);/*加1是因为要算上根节点*/
}
return (num1+num2);
}
int nodeO(Bnode *root)
{
int num1,num2;
if(root==NULL)return(0);
else
{
num1=nodeO(root->lchild);
num2=nodeO(root->rchild);
if(root->lchild==NULL&&root->rchild==NULL)
return(num1+num2+1);/*加1是因为要算上根节点*/
else return(num1+num2);
}
}
int node1(Bnode *root)
{
int num1,num2;
if(root==NULL)return(0);
else if( (root->lchild!=NULL&&root->rchild==NULL) ||(root->lchild==NULL&&root->rchild!=NULL))
return(1);
else
{
num1=node1(root->lchild);
num2=node1(root->rchild);
return(num1+num2+1 );/*加1是因为要算上根节点*/
}
}
int node2(Bnode *root)
{
int num1,num2;
if(root==NULL)return(0);
else
{
num1=node2(root->lchild);
num2=node2(root->rchild);
if(root->lchild!=NULL&&root->rchild!=NULL)
return(num1+num2+1);/*加1是因为要算上根节点*/
else return(num1+num2);
}
}
/*以上是二叉树算结点的算法, nodes()递归算法求节点总数求出总结点的个数,在这里我很糊涂了,node0( )、node1( )、node2( )分别求出度为0、1、2结点的个数,里面的参数都是int num1、int num2这个两个参数,这两个参数都没有被确定赋初值,那么函数返回的值应该是一个不确定的值吧?是不是递归程序中的变量不同,请帮忙理解。谢谢*/