c++ - 检查二叉树是否为二叉搜索树或不起作用的函数

标签 c++ data-structures tree binary-tree binary-search-tree

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

请有人调查一下。

我找不到我的错误。

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/

相关文章:

scala - 使用术语 "Abstract Syntax Tree"

python - 为什么当我们应用身份运算符时,两个具有完全相同数据的列表在 Python 中显示不同的内存地址?

c# - (更多)线程二叉树中旋转节点时的高效锁定

python - 转换二叉树中的嵌套列表的列表

r - 从物种列表制作简单的系统发育树状图(树)

c++ - boost static_vector 而不是 std::is_trivially_destructible

c++ - 从C++动态2D阵列到OpenCV Mat

c++ - gmtime算法的最小实现?

c++ - RPi2、OpenMAX、死锁

java - HashMap Java 如果存在则获取值