找到二叉树高度

时间:2013-04-14 00:47:52

标签: c++ tree binary-tree

我正在尝试编写一个函数来获取二叉树的高度。当我打印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--;
    }
}

1 个答案:

答案 0 :(得分: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?你不需要那些变量来找出二叉树的高度。