求编写递归算法,统计二叉树中度为1的节点数目C语言
发布网友
发布时间:2022-04-30 02:32
我来回答
共3个回答
热心网友
时间:2023-10-06 07:55
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);
}
手打,希望对你有帮助!
热心网友
时间:2023-10-06 07:55
二叉树中度为1的就是叶子即使求叶子节点数
void left(BiTree T)
{
if ( T )
{if ((!T->lchild)&& (!T->rchild))
count++;
left(T->lchild);
left(T->rchild);
}
}
其中可以将count初始化为0即 int count=0;作为全局变量
我已经用过的不会错滴
望对你有帮助!!
热心网友
时间:2023-10-06 07:55
代码少一点的话,看这个
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);
}
}