Check out example codes for "check for bst". It will help you in understanding the concepts better.

Code Example 1

// Java implementation to check if given Binary tree  // is a BST or not     /* Class containing left and right child of current   node and key value*/ class Node  {      int data;      Node left, right;         public Node(int item)      {          data = item;          left = right = null;      }  }     public class BinaryTree  {      // Root of the Binary Tree      Node root;         // To keep tract of previous node in Inorder Traversal      Node prev;         boolean isBST()  {          prev = null;          return isBST(root);      }         /* Returns true if given search tree is binary         search tree (efficient version) */     boolean isBST(Node node)      {          // traverse the tree in inorder fashion and          // keep a track of previous node          if (node != null)          {              if (!isBST(node.left))                  return false;                 // allows only distinct values node              if (prev != null && <= )                  return false;              prev = node;              return isBST(node.right);          }          return true;      }         /* Driver program to test above functions */     public static void main(String args[])      {          BinaryTree tree = new BinaryTree();          tree.root = new Node(4);          tree.root.left = new Node(2);          tree.root.right = new Node(5);          tree.root.left.left = new Node(1);          tree.root.left.right = new Node(3);             if (tree.isBST())              System.out.println("IS BST");          else             System.out.println("Not a BST");      }  }

Code Example 2

// C++ program to check if a given tree is BST.  #include <bits>  using namespace std;   /* A binary tree node has data, pointer to  left child and a pointer to right child */ struct Node  {  	int data;  	struct Node* left, *right;  };   // Returns true if given tree is BST.  bool isBST(Node* root, Node* l=NULL, Node* r=NULL)  {  	// Base condition  	if (root == NULL)  		return true;   	// if left node exist then check it has  	// correct data or not i.e. left node's data  	// should be less than root's data  	if (l != NULL and root->data <= l->data)  		return false;   	// if right node exist then check it has  	// correct data or not i.e. right node's data  	// should be greater than root's data  	if (r != NULL and root->data >= r->data)  		return false;   	// check recursively for every node.  	return isBST(root->left, l, root) and  		isBST(root->right, root, r);  }   /* Helper function that allocates a new node with the  given data and NULL left and right pointers. */ struct Node* newNode(int data)  {  	struct Node* node = new Node;  	node->data = data;  	node->left = node->right = NULL;  	return (node);  }   /* Driver program to test above functions*/ int main()  {  	struct Node *root = newNode(3);  	root->left	 = newNode(2);  	root->right	 = newNode(5);  	root->left->left = newNode(1);  	root->left->right = newNode(4);   	if (isBST(root,NULL,NULL))  		cout << "Is BST";  	else 		cout << "Not a BST";   	return 0;  }

Learn ReactJs, React Native from