Cod sursa(job #2323537)

Utilizator SqueekDanielTodasca Daniel SqueekDaniel Data 19 ianuarie 2019 12:11:24
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.67 kb
#include <bits/stdc++.h>

struct Node {
    Node() {Left = Right = NULL;}
    Node *Left, *Right;
    int X;
}   *Root;

int N;

void Add(int X) {
    if (Root == NULL) {
        Root = new Node;
        Root->X = X;
        return;
    }

    Node *P = Root;
    while(true) {
        if (P->X > X) {
            if (P->Left) {
                P = P->Left;
            }
            else {
                P->Left = new Node;
                P->Left->X = X;
                return;
            }
        }
        else if (P->X <= X) {
            if (P->Right) {
                P = P->Right;
            }
            else {
                P->Right = new Node;
                P->Right->X = X;
                return;
            }
        }
    }
}

Node *Search(int X) {
    Node *P = Root;
    while(P) {
        if (P->X > X)
            P = P->Left;
        else if (P->X < X)
            P = P->Right;
        else return P;
    }   return NULL;
}

bool Contains(int X) {
    return (Search(X) != NULL);
}

void Erase(int X) {
    Node *P = Root;
    while(P) {
        if (P->X > X)
            P = P->Left;
        else if (P->X < X)
            P = P->Right;
        else {
            Node *ToErase = P;

        }
    }
}

std::ifstream In("algsort.in");
std::ofstream Out("algsort.out");

void SRD(Node *P = Root) {
    if (P) {
        SRD(P->Left);
        Out << P->X << ' ' ;
        SRD(P->Right);
    }
}

void Citire() {
    In >> N;
    for (int i=1, x; i<=N; ++i)
        In >> x, Add(x);
}

void Rezolvare() {
    SRD();
}

int main()
{
    Citire();
    Rezolvare();

    return 0;
}