#include <stdio.h>
#include <math.h>
#define PARENT(i) ((i) / 2)
#define LINE_WIDTH 70
#define MAX_ARRAY_N 100
int draw_tree(int *tree,int tree_size) {
int print_pos[MAX_ARRAY_N];
int i, j, k, pos, x = 1, level = 0;
print_pos[0] = 0;
for (i = 1, j = 1; i<tree_size; i++, j++) {
pos = print_pos[PARENT(i)] + ((i-1) % 2 ? -1 : 1)*(LINE_WIDTH / (pow(2, level + 1)) + 1);
for (k = 0; k<pos - x; k++) printf("%c", (i - 1) == 0 || (i - 1) % 2 ? ' ' : '-');
if (tree[i] > 0)
printf("%d", tree[i]);
print_pos[i] = x = pos + 1;
if (j == pow(2, level)) {
printf("\n");
level++;
x = 1;
j = 0;
}
}
printf("\n");
return 0;
}
int main() {
int tree[MAX_ARRAY_N] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5 };
draw_tree(tree,15);
}