Advertisement
elnardu

Untitled

May 24th, 2018
490
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct Node {
  5.   struct Node* left;
  6.   struct Node* right;
  7.   int num;
  8. } Node;
  9.  
  10. void add(Node* newNode, Node* root) {
  11.   if (root->num >= newNode->num) {
  12.     if (root->right == NULL) {
  13.       root->right = newNode;
  14.     } else {
  15.       add(newNode, root->right);
  16.     }
  17.   } else {
  18.     if (root->left == NULL) {
  19.       root->left = newNode;
  20.     } else {
  21.       add(newNode, root->left);
  22.     }
  23.   }
  24. }
  25.  
  26. Node* head = NULL;
  27. int arr[10000];
  28. int n = 0;
  29.  
  30. void traverse(Node* node) {
  31.   if (node->right != NULL && node->left != NULL) {
  32.     arr[n] = node->num;
  33.     n++;
  34.   }
  35.  
  36.   if (node->right != NULL) {
  37.     traverse(node->right);
  38.   }
  39.  
  40.   if (node->left != NULL) {
  41.     traverse(node->left);
  42.   }
  43. }
  44.  
  45. void sort() {
  46.   int i, j, b;
  47.   for (i = 0; i < n - 1; i++) {
  48.     for (j = 0; j < n - i - 1; j++) {
  49.       if (arr[j] > arr[j + 1]) {
  50.         b = arr[j];
  51.         arr[j] = arr[j + 1];
  52.         arr[j + 1] = b;
  53.       }
  54.     }
  55.   }
  56. }
  57.  
  58. int main() {
  59.   int b;
  60.   Node* node;
  61.  
  62.   while (scanf("%d", &b) == 1) {
  63.     if (b == 0) break;
  64.  
  65.     node = malloc(sizeof(Node));
  66.     node->num = b;
  67.     node->left = NULL;
  68.     node->right = NULL;
  69.  
  70.     if (head == NULL) {
  71.       head = node;
  72.       continue;
  73.     }
  74.  
  75.     add(node, head);
  76.   }
  77.  
  78.   traverse(head);
  79.   sort();
  80.  
  81.   int i;
  82.   for (i = 0; i < n; i++) {
  83.     printf("%d ", arr[i]);
  84.   }
  85.   printf("\n");
  86.  
  87.   return 0;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement