Advertisement
Art_Uspen

Untitled

Jan 14th, 2022
576
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.67 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4.  
  5. typedef struct Node {
  6.     int value;
  7.     struct Node *left;
  8.     struct Node *right;
  9. } Node;
  10.  
  11.  
  12. void insert(Node *node, int value) {
  13.     if (node->value < value) {
  14.         if (!node->left) {
  15.             node->left = malloc(sizeof(*node));
  16.             node->left->value = value;
  17.         } else {
  18.             insert(node->left, value);
  19.         }
  20.     } else if (node->value > value) {
  21.         if (!node->right) {
  22.             node->right = malloc(sizeof(*node));
  23.             node->right->value = value;
  24.         } else {
  25.             insert(node->right, value);
  26.         }
  27.     }
  28. }
  29.  
  30. void free_all(Node *node) {
  31.     if (node) {
  32.         free_all(node->left);
  33.         printf("%d ", node->value);
  34.         free_all(node->right);
  35.         free(node);
  36.     }
  37. }
  38.  
  39. int main() {
  40.     Node *head = NULL;
  41.     _Bool first = true;
  42.     _Bool empty = true;
  43.     int sym;
  44.     int last_sym = -1;
  45.     while (scanf("%d", &sym) != EOF) {
  46.         empty = false;
  47.         if (sym == 0) {
  48.             if (first) {
  49.                 first = false;
  50.             } else {
  51.                 printf(" ");
  52.             }
  53.             free_all(head);
  54.             printf("%d", 0);
  55.             head = NULL;
  56.         } else {
  57.             if (!head) {
  58.                 head = calloc(1, sizeof(*head));
  59.                 head->value = sym;
  60.             } else {
  61.                 insert(head, sym);
  62.             }
  63.         }
  64.         last_sym = sym;
  65.     }
  66.     if (head) {
  67.         if (last_sym != 0) {
  68.             printf(" ");
  69.         }
  70.         free_all(head);
  71.         printf("%d", 0);
  72.  
  73.     }
  74.     if (!empty) {
  75.         printf("\n");
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement