배열 이진트리 출력 코드

2015.06.04 15:11

공영선 조회 수:4911

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

댓글 0

목록
번호 제목 글쓴이 날짜 조회 수
5 C언어 문제들 참고자료 DrNam 2018.05.04 250
4 데이터구조 기말고사 main 공영선 2015.06.12 805
3 연결리스트 이진트리 출력 코드 공영선 2015.06.04 921
» 배열 이진트리 출력 코드 공영선 2015.06.04 4911
1 트리 텍스트 그림 공영선 2015.05.29 233