查找任何节点的BST高度

时间:2016-06-22 13:03:03

标签: c++ recursion height binary-search-tree

我正在尝试使用代码来查找二进制搜索树的高度。我在下面编写代码:

 int height(node *root)
{
  if(root=NULL)
  return -1;

  int left=height(root->left);
  int right=height(root->right);
  return max(left,right)+1;
}

我将节点5,17,34和2插入树中并将根传递给高度函数。 出乎意料的是,程序崩溃了,我不得不在Windows错误报告期间强制关闭窗口(我在IDE中尝试)。我也在在线编译器中尝试了这个但是它也显示了运行时错误。

MAIN功能:

  int main()
{
  node *root=new node();
  root=NULL;
  root=insert(root,5);
  root=insert(root,17);
  root=insert(root,34);
  root=insert(root,2);
  int x=height(root);
}

INSERT函数,如果您想查看它

     node *insert(node *root,int d)
    {
      if(root==NULL)
      {
       node *temp=new node();
       temp->data=d;
       temp->left=temp->right=NULL;
       root=temp;

      }
     else
    {  if(root->data>d)
      {
       root->left=insert(root->left,d);
      }
      else
      root->right=insert(root->right,d);
    }
    return root;
   }

我想提一下,问题是在我尝试在程序中使用高度函数时启动的。在此之前,所有其他函数都已编译并成功运行。我已尝试干运行但无法找出问题所在。

1 个答案:

答案 0 :(得分:0)

使用max函数。此函数将返回最长路径的高度,该路径将是树的高度。

int main()
{

   int num = height(root);
   return 0;
}

int height (node * root)
{
    if(!root)
        return 0;

    return max(height(root -> right), height(root -> left)) + 1;
}