C++ 我试图证明一棵给定的树是一棵二叉搜索树。我将输入一个二叉树,我想要的就是我的函数返回true

C++ 我试图证明一棵给定的树是一棵二叉搜索树。我将输入一个二叉树,我想要的就是我的函数返回true,c++,recursion,tree,binary-search-tree,C++,Recursion,Tree,Binary Search Tree,我试图证明一棵给定的树是一棵二叉搜索树。我将输入一个二叉树,我想要的就是我的函数返回true bool isbinary(bstnode* root){ if(root==NULL) return; isbinary(root->left); isbinary(root->right); int data1=root->data; if((root->left->data<=data1&&root-&g

我试图证明一棵给定的树是一棵二叉搜索树。我将输入一个二叉树,我想要的就是我的函数返回true

 bool isbinary(bstnode* root){
    if(root==NULL) return;
    isbinary(root->left);
    isbinary(root->right);
    int data1=root->data;
    if((root->left->data<=data1&&root->right->data>data1) ||
       (root->left->data<=data1&&root->right==NULL) ||
       (root->right->data>data1&&root->left==NULL)) 
        return true;


// this doesnt work! i want to know the reason and a possible 
// solution in my line of thinking. TIA

    }
bool是二进制的(bstnode*root){
if(root==NULL)返回;
isbinary(根->左);
isbinary(根->右);
int data1=根->数据;
如果((根->左->数据右->数据>数据1)||
(root->left->dataright==NULL)||
(root->right->data>data1&&root->left==NULL)
返回true;
//这不管用!我想知道原因和可能的解决办法
//我的思路中的解决方案。TIA
}

如果要返回
true
/
false
,则函数返回类型应为
bool
而不是
void

bool isbinary(bstnode* root){
.
.
.
return true/false;
}

编辑:-在您更正输入错误时,您的递归仍然有许多缺陷。如果您没有严格控制递归,那么您可以执行BST的简单顺序遍历,并同时将每个节点存储在
临时数组中。正如您所知,inoorder遍历给出了已排序的节点,您可以通过
temp数组

轻松地检查它,您的问题到底是什么?(顺便说一句,我们不打算为您编写代码)这种方法正确吗?看看这里-可能会有帮助。@sankar您不应该通过这样编辑您的问题来使现有答案无效。这是对那些真正想帮助你的人的不尊重。