kirilstanoev

Untitled

Jul 8th, 2021 (edited)
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.89 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <limits.h>
  3.  
  4. struct node_t
  5. {
  6.     int value;
  7.     struct node_t* left;
  8.     struct node_t* right;
  9. };
  10.  
  11. void inorder_traverse(struct node_t* node)
  12. {
  13.     if (node == NULL)
  14.         return;
  15.  
  16.     inorder_traverse(node->left);
  17.     printf(" %d ", node->value);
  18.     inorder_traverse(node->right);
  19. };
  20.  
  21. int check_BST(struct node_t* root)
  22. {
  23.     return check_BST_internal(INT_MIN, root, INT_MAX);
  24. };
  25.  
  26. int check_BST_internal(int min, struct node_t* node, int max)
  27. {
  28.     if (node == NULL)
  29.         return 1;
  30.  
  31.     if (node->value < min || node->value > max)
  32.         return 0;
  33.  
  34.     return (check_BST_internal(min, node->left, node->value)) && (check_BST_internal(node->value, node->right, max));
  35. };
  36.  
  37.  
  38. int main()
  39. {
  40.     struct node_t* root_node_6 = malloc(sizeof(struct node_t));
  41.     root_node_6->value = 6;
  42.  
  43.     struct node_t* node_3 = malloc(sizeof(struct node_t));
  44.     node_3->value = 3;
  45.  
  46.     struct node_t* node_9 = malloc(sizeof(struct node_t));
  47.     node_9->value = 9;
  48.  
  49.     root_node_6->left = node_3;
  50.     root_node_6->right= node_9;
  51.  
  52.     struct node_t* node_1 = malloc(sizeof(struct node_t));
  53.     node_1->value = 1;
  54.     node_1->left = NULL;
  55.     node_1->right = NULL;
  56.  
  57.     struct node_t* node_5 = malloc(sizeof(struct node_t));
  58.     node_5->value = 2;
  59.     node_5->left = NULL;
  60.     node_5->right = NULL;
  61.  
  62.     node_3->left = node_1;
  63.     node_3->right = node_5;
  64.  
  65.     struct node_t* node_7 = malloc(sizeof(struct node_t));
  66.     node_7->value = 7;
  67.     node_7->left = NULL;
  68.     node_7->right = NULL;
  69.  
  70.     struct node_t* node_11 = malloc(sizeof(struct node_t));
  71.     node_11->value = 11;
  72.     node_11->left = NULL;
  73.     node_11->right = NULL;
  74.  
  75.     node_9->left = node_7;
  76.     node_9->right = node_11;
  77.  
  78.     inorder_traverse(root_node_6);
  79.  
  80.     if (check_BST(root_node_6) == 1)
  81.         printf("\nTrue");
  82.     else
  83.         printf("\nFalse");
  84.  
  85.  
  86.     return 0;
  87. }
Add Comment
Please, Sign In to add comment