注册 登录
编程论坛 数据结构与算法

看看下 二叉树求有左右孩子节点数的算法。

LGH710681042 发布于 2010-12-29 15:56, 644 次点击
递归算法求二叉树有左右孩子节点数的算法!!!!
int CountBit(BinTNode *t)
{
    int a=0;
    if(t)
    {
        if(t->lchid!=0&&t->rchid!=0) a++;
        a=CountBit(t->lchid)+CountBit(t->rchid);
    }
    return a;
}

请问下这么简单的算法有错不???
1 回复
#2
诸葛修勤2010-12-29 22:58
这个 肯定是错误的
if() a++;
a = 。。。;

a 的值被修改啦 不能达到累加的效果 结果经过 a=CountBit(t->lchid)+CountBit(t->rchid);后 a的值总是0

int CountBit(BinTNode *t)
{
    int a=0;
    if(t)
    {
        if(t->l!=0&&t->r!=0)
        {
            a=CountBit(t->l)+CountBit(t->r) + 1;
        }
        else
        {
            a=CountBit(t->l)+CountBit(t->r);
        }
    }
    return a;
}
1