#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;
}