m2skills

check BST cpp

Jun 1st, 2018
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.60 KB | None | 0 0
  1. // http://code2begin.blogspot.com
  2. // program to check if a given binary tree is a Binary search tree or not
  3.  
  4. #include <iostream>
  5. #include <queue>
  6. #include <map>
  7. #include <list>
  8. #include <stack>
  9.  
  10. using namespace std;
  11.  
  12. // node class
  13. class node{
  14. public:
  15.     int data;
  16.     node* left;
  17.     node* right;
  18. };
  19.  
  20. // function that returns a pointer to new node
  21. node* createNode(int element){
  22.     node* temp = (node*) malloc(sizeof(node));
  23.     temp->data = element;
  24.     temp->left = NULL;
  25.     temp->right = NULL;
  26.     return temp;
  27. }
  28.  
  29. // function to check if the given binary tree is a BST or not
  30. bool check_BST(node* current){
  31.     if(current == NULL){
  32.         return true;
  33.     }
  34.     if (current->left != NULL && current->data < current->left->data){
  35.         return false;
  36.     }
  37.     if (current->right != NULL && current->data > current->right->data){
  38.         return false;
  39.     }
  40.     return (check_BST(current->left) && check_BST(current->right));
  41. }
  42. int main() {
  43.  
  44.     node* head = createNode(1);
  45.     head->left = createNode(2);
  46.     head->right = createNode(3);
  47.     head->left->left = createNode(4);
  48.     head->left->right = createNode(5);
  49.     head->right->right = createNode(6);
  50.     head->left->left->right = createNode(7);
  51.     head->right->right->left = createNode(8);
  52.     head->left->left->right->left = createNode(9);
  53.     head->left->left->right->left->left = createNode(10);
  54.     head->right->right->left->right = createNode(11);
  55.  
  56.     node* head2 = createNode(5);
  57.     head2->left = createNode(2);
  58.     head2->right = createNode(12);
  59.     head2->left->left = createNode(-4);
  60.     head2->left->right = createNode(3);
  61.     head2->right->left = createNode(9);
  62.     head2->right->right = createNode(21);
  63.     head2->right->right->left = createNode(19);
  64.     head2->right->right->right = createNode(25);
  65.  
  66.     node* head3 = createNode(1);
  67.     head3->left = createNode(2);
  68.     head3->right = createNode(3);
  69.     head3->left->left = createNode(4);
  70.     head3->left->right = createNode(5);
  71.     head3->right->right = createNode(6);
  72.     head3->left->left->right = createNode(7);
  73.     head3->right->right->left = createNode(8);
  74.     head3->left->left->right->left = createNode(9);
  75.     head3->left->left->right->left->left = createNode(10);
  76.     head3->right->right->left->right = createNode(11);
  77.  
  78.     // cout<<"SPIRAL Level wise traversal of the above binary tree is : "<<endl;
  79.     cout<<"Binary Tree #1 is a Binary Search Tree : "<<check_BST(head)<<endl;
  80.     cout<<"Binary Tree #2 is a Binary Search Tree : "<<check_BST(head2)<<endl;
  81.     cout<<"Binary Tree #3 is a Binary Search Tree : "<<check_BST(head3)<<endl;
  82. }
Add Comment
Please, Sign In to add comment