This is even less code:
Code:
#include <stdio.h>
#include <stdlib.h>

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

void treePrint(Tree *node, int depth) {
    if (!node) return;
    if (node->right) treePrint(node->right, depth + 1);
    printf("%*s%2d\n", depth * 4, "", node->value);
    if (node->left) treePrint(node->left, depth + 1);
}

void treeAdd(Tree **node, int value) {
    if (!*node) {
        *node = malloc(sizeof **node);
        (*node)->value = value;
        (*node)->left = (*node)->right = NULL;
    }
    else if (value < (*node)->value)
        treeAdd(&(*node)->left, value);
    else
        treeAdd(&(*node)->right, value);
}

int main() {
    Tree *root = NULL;
/*
               8
       4              12 
   2       6      10      14
 1   3   5   7   9  11  13  15
*/
    int values[] = { 8, 4, 12, 2, 6, 10, 14, 1, 3, 5, 7, 9, 11, 13, 15 };

    for (int i = 0; i < 15; ++i)
        treeAdd(&root, values[i]);

    treePrint(root, 0);

    return 0;
}