求改正算法
今天写了一个“统计二叉树中度为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);}
[解决办法]