C++ Program to Check if a Binary Tree is a BST


Binary Search Tree is a binary tree data structure in which we have 3 properties −

  • The left subtree of a binary search tree of a node contains only nodes with keys lesser than the node’s key.

  • The right subtree of a binary search tree node contains only nodes with keys greater than the node’s key.

  • The left and right of a subtree each must also be a binary search tree.

Algorithm

Begin
   function BSTUtill()
      If node is equals to NULL then
         Return 1.
      If data of node is less than minimum or greater than
      maximum data then
         Return 0.
      Traverse left and right sub-trees recursively. 
End.

Example Code

 Live Demo

#include <iostream>
#include <cstdlib>
#include <climits>
using namespace std;
struct n {
   int d;
   n* l;
   n* r;
};
int BSTUtil(n* node, int min, int max);
int isBST(n* node) {
   return(BSTUtil(node, INT_MIN, INT_MAX));
}
int BSTUtil(struct n* node, int min, int max) {
   if (node==NULL)
      return 1;
   if (node->d < min || node->d > max)
      return 0;
      return BSTUtil(node->l, min, node->d - 1) && BSTUtil(node->r, node->d + 1, max);
}
n* newN(int d) {
   n* nod = new n;
   nod->d = d;
   nod->l = NULL;
   nod->r = NULL;
   return nod;
}
int main() {
   n *root = newN(7);
   root->l = newN(6);
   root->r = newN(10);
   root->l->l = newN(2);
   root->l->r = newN(4);
   if (isBST(root))
      cout<<"The Given Binary Tree is a BST"<<endl;
   else
      cout<<"The Given Binary Tree is not a BST"<<endl;
      n *root1 = newN(10);
      root1->l = newN(6);
      root1->r = newN(11);
      root1->l->l = newN(2);
      root1->l->r = newN(7);
      if (isBST(root1))
         cout<<"The Given Binary Tree is a BST"<<endl;
      else
         cout<<"The Given Binary Tree is not a BST"<<endl;
      return 0;
}

Output

The Given Binary Tree is not a BST
The Given Binary Tree is a BST

Updated on: 30-Jul-2019

719 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements