• Source
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <limits.h>
    4. struct node
    5. {
    6. int data;
    7. struct node* left;
    8. struct node* right;
    9. };
    10. struct node* newNode(int data)
    11. {
    12. struct node* node = (struct node*)
    13. malloc(sizeof(struct node));
    14. node->data = data;
    15. node->left = NULL;
    16. node->right = NULL;
    17.  
    18. return(node);
    19. }
    20. int isBST(struct node* root,int prev)
    21. {
    22.  
    23. if (!root) return 1;
    24.  
    25. if (isBST(root->left, prev)) {
    26. //printf("%d - %d \n",root->data, prev);
    27. if (root->data > prev) {
    28. prev = root->data;
    29. return isBST(root->right, prev);
    30. }
    31. else return 0;
    32. }
    33. else return 0;
    34. }
    35.  
    36. int main(void) {
    37. //BST
    38. /*struct node *root = newNode(4);
    39.   root->left = newNode(2);
    40.   root->right = newNode(5);
    41.   root->left->left = newNode(1);
    42.   root->left->right = newNode(3);
    43.   */
    44. //Not A BST
    45. struct node *root = newNode(3);
    46. root->left = newNode(2);
    47. root->right = newNode(6);
    48. root->left->left = newNode(1);
    49. root->left->right = newNode(5);
    50.  
    51. if(isBST(root,0))
    52. printf("Is BST");
    53. else
    54. printf("Not a BST");
    55. return 0;
    56. }
    57.