/*
 * bst.cpp
 */

#include <iostream>

using namespace std;

typedef struct node {
    int key;
    struct node * left;
    struct node * right;
} node;

typedef node * pnode;

void bst_insert(pnode & root, int value)
{
    if (root == nullptr) {
        root = new node;
        root->key = value;
        root->left = nullptr;
        root->right =  nullptr;
    }
    else {
        if (value < root->key)
            bst_insert(root->left, value);
        else
            bst_insert(root->right, value);
    }
}

void bst_show(pnode root)
{
    if (root != nullptr) {
        bst_show(root->left);
        cout << root->key << " ";
        bst_show(root->right);
    }
}

int main(void)
{
    pnode bst = nullptr;

    bst_insert(bst, 10);
    bst_insert(bst, 2);
    bst_insert(bst, 20);
    bst_insert(bst, 3);
    bst_insert(bst, 5);
    bst_show(bst);
    cout << endl;
    return 0;
}

