读书人

求改正算法,该怎么处理

发布时间: 2012-06-15 19:37:05 作者: rapoo

求改正算法
今天写了一个“统计二叉树中度为0的结点个数”的算法,不知道正确不,求大侠真正并修改,多谢了


Int ZeroDegree(Btree T)
{
Int lcount,rcount;

If(!T) return 0;

ZeroDgree(T->lchild);

If(!T->lchild && !T->rchild)

lcount++;

ZeroDegree(T->rchild);

If(!T->lchild && !T->rchild)

rcount++;

Return lcount+rcount;
}

[解决办法]
感觉楼主写的有点乱,个人比较喜欢:
int count=0;
void ZeroDegree(Btree T)
{
if(T&&(!T->lchild)&&(!T->rchild)&&(++i))
return ;
else
{
ZeroDegree(T->rchild);
ZeroDegree(T->lchild);
}
}
先选择遍历树的右节点,是因为上面的if条件中先T->lchild,所以这样写会再左节点为空时减少点调用
[解决办法]
int ZeroDegree(Btree T)
{
if (NULL == T)
{
return 0;
}

int count = ZeroDgree(T->lchild) + ZeroDegree(T->rchild);
if (0 == count)
{
count = 1;
}

return count;
}
[解决办法]

C/C++ code
int ZeroDegree(Btree T){    if(0 == T)                                return 0;    if((0 == T->lchild)&&(0 == T->rchild))    return 1;        return ZeroDgree(T->lchild)+ZeroDegree(T->rchild);}
[解决办法]
探讨
今天写了一个“统计二叉树中度为0的结点个数”的算法,不知道正确不,求大侠真正并修改,多谢了


Int ZeroDegree(Btree T)
{
Int lcount,rcount;

If(!T) return 0;

ZeroDgree(T->lchild);

If(!T->lchild && !T->rchild)

lcou……

读书人网 >软件架构设计

热点推荐