有人可以告诉我为什么这不起作用吗?
这对我来说似乎是正确的

请有人调查一下。

我找不到我的错误。

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/

10-11 09:23
查看更多