Cod sursa(job #1845120)

Utilizator PletoPletosu Cosmin-Andrei Pleto Data 10 ianuarie 2017 22:01:01
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.36 kb
#include <fstream>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

struct vertex{
    int value;
    int c;
    struct vertex *left, *right;
};
typedef struct vertex *Tree;
Tree T;

void insertInTree(Tree &r, int x){
    Tree p = new vertex, q = r;
    p->value = x;
    p->c = 1;
    p->left = p->right = '\0'; //'\0' == NULL
    if(!r){
        r = p;
        return;
    }
    while(1){
        if(q -> value ==x){
            q->c += 1;
            delete p;
            return;
        }
        if(q ->value > x){
            if(q->left) q = q->left;
            else{
                q->left = p;
                return;
            }
        } else{
            if(q->right) q = q->right;
            else{
                q->right = p;
                return;
            }
        }
    }
}

//int k;

void inorder(Tree r){

    if(r){
        /*if(k==1){
            fout<<r->value;
            return;
        }*/
        inorder(r->left);
        while(r->c /*and k!=1*/){
            fout<<r->value<<' ';
            r->c -= 1;
        }
        inorder(r->right);
    }
}

int main()
{
    int M;
    fin>>M;//>>k;
    for(int x, i=0; i<M; ++i){
        fin>>x;
        insertInTree(T, x);
    }
    inorder(T);
    fin.close();
    fout.close();
    return 0;
}