回 帖 发 新 帖 刷新版面

主题:这两编写题有错吗?大虾指教!~```

1、编写一算法计算二叉树中的结点总数? 
int CountNode(BinTree *root)
{
int num1,num2;
if(root==Null) return(0);
else if(root->lchild==Null&&rooot->rchild==Null)
return(1);
else
  {
   num1=CountNode(root->lchild);
   num2=CountNode(root->rchild);
   return(num1+num2+1);
  }
}

2、编写一算法计算二叉树中叶子结点的个数?  
int CountLeafs(BinTree *root)
{
int num1,num2;
if(root==Null) return(0);
else if(root->lchild==Null&&root->rchild==Null)
return(1);
else
  {
num1=CountLeafs(root->lchild);
num2=CountLeafs(root->rchild);
return(num1+num2);
          }
        }
[em1][em1][em1]

回复列表 (共2个回复)

沙发

个人认为

基本思路应该是对的啦

1.判断左右孩子是否都为空可以去掉,另外两个临时变量num1和num2也可以去掉
int CountNode( BinTree* root )
{
        if( NULL == root )
        {
                return 0;
        }
        else
        {
                return CountNode( root->lchild )
                       + CountNode( root->rchild ) + 1 ;
        }
}
2.也可以省掉那个num1和num2啦

板凳

不是吧
如果没有返回值多少`?左有右没有左没有右有,又如何?][
要返回结点值!!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册