Cod sursa(job #1693387)

Utilizator thinkphpAdrian Statescu thinkphp Data 22 aprilie 2016 23:29:53
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.86 kb
#include <iostream>
#include <fstream>
#define FIN "algsort.in"
#define FOUT "algsort.out"

using namespace std;

ofstream fout(FOUT);

struct Node {

       int val;
       struct Node *left;
       struct Node *right;
};

Node *root = NULL;

void insert(int elem) {

     if(root == NULL) {

        Node *newElem = new Node;

              newElem->val = elem;

              newElem->left = NULL;

              newElem->right = NULL;  

              root = newElem;

     } else {

        Node *curr = root;

        while( 1 ) {

              if(elem < curr->val) {

                 if( curr->left ) {

                     curr = curr->left; 

                 } else {

                     Node *node = new Node;

                           node->val = elem;

                           node->left = NULL;

                           node->right = NULL;

                           curr->left = node;

                           break;                             
                 }

              } else {

                 if( curr->right ) {

                     curr = curr->right; 

                 } else {

                     Node *node = new Node;

                           node->val = elem;

                           node->left = NULL;

                           node->right = NULL;

                           curr->right = node;

                           break;                             
                 }

              } 
        }

     }
}

void inorder(Node *node) {

     if(node->left) inorder(node->left);

     fout<<node->val<<" ";

     if(node->right) inorder(node->right);
}

int main() {

    ifstream fin(FIN);

    int n, elem;

    fin>>n;

    for(int i = 0; i < n; ++i) fin>>elem, insert( elem );

    inorder( root );

    return(0);  
}