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

时间:2015-03-30 17:23:30

标签: 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->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

    }

1 个答案:

答案 0 :(得分:1)

如果您想返回true / false,那么您的函数返回类型应为bool而不是void

bool isbinary(bstnode* root){
.
.
.
return true/false;
}
编辑: - 当你纠正错字时,你的递归仍有许多缺陷。如果你没有紧紧抓住递归,那么你可以进行BST的简单顺序遍历并将每个节点存储在{{1 }} 同时。如您所知,inorder遍历提供了已排序的节点,您可以通过temp array轻松检查它。