求编写递归算法,统计二叉树中度为1的节点数目C语言

谢谢哟~

int Degree(BTree * t)
{
if(!t) //根节点为空
return 0;
else if (t->lchild == NULL && t->rchild == NULL)//只有根节点
return 0;
else if (t->lchild != NULL && t->rchild == NULL)//有左孩子没有右孩子
return 1+ Degree(t->lchild);
else if (t->lchild == NULL && t->rchild != NULL)//有右孩子没有左孩子
return 1 + Degree(t->rchild);
else if (t->lchild != NULL && t->rchild != NULL)//左右孩子都有
return Degree(t->lchild) + Degree(t->rchild);
}
手打,希望对你有帮助!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-01
二叉树中度为1的就是叶子即使求叶子节点数
void left(BiTree T)
{
if ( T )
{if ((!T->lchild)&& (!T->rchild))
count++;
left(T->lchild);
left(T->rchild);
}
}
其中可以将count初始化为0即 int count=0;作为全局变量
我已经用过的不会错滴
望对你有帮助!!
第2个回答  2012-11-03
代码少一点的话,看这个
void Degree(BTree *t,int &count)

{
if(t)

{
if((t->left&&!t->right)||(!t->left&&t->right))

count++;

Degree(t->left,count);

Degree(t->right,count);

}
}