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