Cod sursa(job #978566)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 29 iulie 2013 00:41:55
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>

using namespace std;

struct btreenode
{
    btreenode *leftchild ;
    int data ;
    btreenode *rightchild ;
} ;

void adauga ( btreenode *&, int ) ;
void inorder ( btreenode * ) ;

ofstream g("algsort.out");

int main( )
{
    btreenode *bt = NULL;

    ifstream f("algsort.in");

    int n, a;

    int v[500002];

    f >> n;

    for ( int i = 0; i < n; i++ )
            f >> v[i];

     random_shuffle ( v, v + n - 1 );
     random_shuffle ( v, v + n - 1 );

     for ( int i = 0; i < n; i++ )
            adauga(bt,v[i]);

    inorder(bt);
}

void adauga ( btreenode *&sr, int num )
{
    if ( sr == NULL )
    {
        sr = new btreenode;

        ( sr ) -> leftchild = NULL ;
        ( sr ) -> data = num ;
        ( sr ) -> rightchild = NULL ;
    }
    else
    {
        if ( num < ( sr ) -> data )
            adauga ( ( ( sr ) -> leftchild ), num ) ;
        else
            adauga ( ( ( sr ) -> rightchild ), num ) ;
    }
}

void inorder ( btreenode *sr )
{
    if ( sr != NULL )
    {
        inorder ( sr -> leftchild ) ;
        g << sr -> data << " ";
        inorder ( sr -> rightchild ) ;
    }
}