有人能告诉我为什么这不起作用吗? 这对我来说似乎是正确的
请有人调查一下。
我找不到我的错误。
bool checkbst(node* root,int minValue,int maxValue)
{
if(root==NULL)
{
return true;
}
else if(((root->data)>(minValue))&&
((root->data)>(maxValue))&&
(checkbst(root->left,minValue,root->data))&&
(checkbst(root->right,root->data,maxValue)))
{
return true;
}
else
{
return false;
}
}
void isbst(node* root)
{
if( checkbst(root,INT_MIN,INT_MAX))
{
cout<<"the tree is bst";
}
}
最佳答案
您在checkbst中有错别字,您正在检查
((root->data)>(minValue))&&((root->data)>(maxValue))
虽然它可能应该是
((root->data)>(minValue))&&((root->data)<(maxValue))
(注意“小于”符号)。
关于c++ - 检查二叉树是否为二叉搜索树或不起作用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40322442/