二叉树深度及叶子数的算法的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 00:05:41
int BiTreeDepth(BitNode *T)
{
int hl,hr;
if(T==NULL) return 0;
hl=BiTreeDepth(T->lchild);
hr=BiTreeDepth(T->rchild);
return (hl>hr?hl:hr)+1;
}

int BiTreeLeaf(BitNode *T)
{ int static n=0;
if(T->lchild==NULL&&T->rchild==NULL) n++;
if (T!=NULL)
{
BiTreeLeaf(T->lchild);
BiTreeLeaf(T->rchild);
}
return n;
}

请问我写的上面两个算法对吗,我运行总是出错误

第一个没问题,第二个改成:
int BiTreeLeaf(BitNode *T)
{
int static n=0;
if(T->lchild==NULL&&T->rchild==NULL) n++;
if(T->lchild)//左孩子必须存在,才能对其计算
BiTreeLeaf(T->lchild);
if(T->rchild)//右孩子必须存在,才能对其计算
BiTreeLeaf(T->rchild);
return n;
}