Cod sursa(job #1986808)

Utilizator 1475369147896537415369Andrei Udriste 1475369147896537415369 Data 28 mai 2017 22:41:41
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.44 kb
#include<cstdio>

using namespace std;

#define left 0
#define right 1

struct bstNode
{
    int data;
    bstNode *son[2];

    bstNode(int _data = 0)
    {
        data = _data;
        son[left] = son[right] = NULL;
    }
};

class BST
{

private:

    bstNode *root;

    void dfs(bstNode *parent)
    {
        if(parent == NULL) return;

        dfs(parent -> son[left]);
        printf("%d ", parent -> data);
        dfs(parent -> son[right]);
    }

public:

    BST()
    {
        root = NULL;
    }

    void insert(int data)
    {
        bstNode *newNode = new bstNode(data);

        if(root == NULL)
        {
            root = newNode;
            return;
        }

        for(bstNode *current = root;;)
        {
            bool i = data > current -> data;

            if(current -> son[i] != NULL) current = current -> son[i];
            else
            {
                current -> son[i] = newNode;
                return;
            }
        }
    }

    void inorder()
    {
        dfs(root);
        printf("\n");
    }
};

#undef left
#undef right

int main() {

    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);

    int N, number;
    BST input;

    scanf("%d", &N);

    for(int i = 1; i <= N; i++)
    {
        scanf("%d", &number);
        input.insert(number);
    }

    input.inorder();

    return 0;
}