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;
}