Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- typedef struct Node {
- int value;
- struct Node *left;
- struct Node *right;
- } Node;
- void insert(Node *node, int value) {
- if (node->value < value) {
- if (!node->left) {
- node->left = malloc(sizeof(*node));
- node->left->value = value;
- } else {
- insert(node->left, value);
- }
- } else if (node->value > value) {
- if (!node->right) {
- node->right = malloc(sizeof(*node));
- node->right->value = value;
- } else {
- insert(node->right, value);
- }
- }
- }
- void free_all(Node *node) {
- if (node) {
- free_all(node->left);
- printf("%d ", node->value);
- free_all(node->right);
- free(node);
- }
- }
- int main() {
- Node *head = NULL;
- _Bool first = true;
- _Bool empty = true;
- int sym;
- int last_sym = -1;
- while (scanf("%d", &sym) != EOF) {
- empty = false;
- if (sym == 0) {
- if (first) {
- first = false;
- } else {
- printf(" ");
- }
- free_all(head);
- printf("%d", 0);
- head = NULL;
- } else {
- if (!head) {
- head = calloc(1, sizeof(*head));
- head->value = sym;
- } else {
- insert(head, sym);
- }
- }
- last_sym = sym;
- }
- if (head) {
- if (last_sym != 0) {
- printf(" ");
- }
- free_all(head);
- printf("%d", 0);
- }
- if (!empty) {
- printf("\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement