Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct Node {
- struct Node* left;
- struct Node* right;
- int num;
- } Node;
- void add(Node* newNode, Node* root) {
- if (root->num >= newNode->num) {
- if (root->right == NULL) {
- root->right = newNode;
- } else {
- add(newNode, root->right);
- }
- } else {
- if (root->left == NULL) {
- root->left = newNode;
- } else {
- add(newNode, root->left);
- }
- }
- }
- Node* head = NULL;
- int arr[10000];
- int n = 0;
- void traverse(Node* node) {
- if (node->right != NULL && node->left != NULL) {
- arr[n] = node->num;
- n++;
- }
- if (node->right != NULL) {
- traverse(node->right);
- }
- if (node->left != NULL) {
- traverse(node->left);
- }
- }
- void sort() {
- int i, j, b;
- for (i = 0; i < n - 1; i++) {
- for (j = 0; j < n - i - 1; j++) {
- if (arr[j] > arr[j + 1]) {
- b = arr[j];
- arr[j] = arr[j + 1];
- arr[j + 1] = b;
- }
- }
- }
- }
- int main() {
- int b;
- Node* node;
- while (scanf("%d", &b) == 1) {
- if (b == 0) break;
- node = malloc(sizeof(Node));
- node->num = b;
- node->left = NULL;
- node->right = NULL;
- if (head == NULL) {
- head = node;
- continue;
- }
- add(node, head);
- }
- traverse(head);
- sort();
- int i;
- for (i = 0; i < n; i++) {
- printf("%d ", arr[i]);
- }
- printf("\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement