3

我正在尝试编写一个函数来获取二叉树的高度。当我打印值的maxi值是我所期望的,但是当函数返回值时,值始终为 0。有人可以告诉我在这里做错了什么吗?

int treeHeight(tree *p)
{
    static int maxi=0;
    static int i=0;
    if(p==NULL)
    {
        return maxi;
    }
    else
    {
        if(p->left!=NULL||p->right!=NULL)
        {
            i++;
        }
        else
        {
            i++;
            if(maxi<i)
            {
                maxi=i;
            }
        }
        treeHeight(p->left);
        treeHeight(p->right);
        i--;
    }
}
4

1 回答 1

9

您的treeHeight函数应如下所示:

int treeHeight(tree *p)
{
   if (p == NULL)
   {
      return -1;
   }

   int left = treeHeight(p->left);
   int right = treeHeight(p->right); 

   return 1 + std::max(left, right);
}

为什么你需要静态变量imaxi那里?您不需要那里的这些变量来找出二叉树的高度。

于 2013-04-14T00:54:03.783 回答