我试图证明一个给定的树是一个二进制搜索树.我将输入一个二叉树,我只想让函数返回true



我试图证明给定的树是一个二进制搜索树。我将输入一个二叉树,我只想让函数返回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
    }

如果要返回true/false,那么函数返回类型应该是bool而不是void

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

编辑:-当你纠正拼写错误时,你的递归仍然有很多缺陷。如果您没有严格掌握递归,那么您可以对BST进行简单的有序遍历,并将每个节点同时存储在temp array中。正如您所知,有序遍历提供了排序的节点,您可以通过temp array轻松地检查它。

相关内容