我正在尝试使用代码来查找二进制搜索树的高度。我在下面编写代码:
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;
}
我想提一下,问题是在我尝试在程序中使用高度函数时启动的。在此之前,所有其他函数都已编译并成功运行。我已尝试干运行但无法找出问题所在。
答案 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;
}