判断一颗二叉树是否是二叉搜索树(C++)

阅读 61

2022-04-03

#include <iostream>
#include <climits>
using namespace std;
class Node{
public:
    int data;
    Node* left;
    Node* right;
    Node(int val){
        data = val;
        left=right = NULL;
    }
};
int preValue = INT_MIN;
bool checkBST(class Node* head){
    if(head == NULL){
        return true;
    }
    bool leftIsBst = checkBST(head->left);
    if(!leftIsBst){
        return false;
    }
    if(head->data <= preValue){
        return false;
    }
    else{
        preValue = head->data;
    }
    return checkBST(head->right);
    
}
int main()
{
    class Node* root = new Node(6);
    root->left = new Node(3);
    root->right = new Node(8);
    root->left->left = new Node(1);
    root->left->right = new Node(4);
    root->right->left = new Node(7);
    root->right->right = new Node(9);
    cout<<checkBST(root)<<endl;
    
}

 

精彩评论(0)

0 0 举报