C출력 결과보통 · 20점#트리#구조체#포인터#재귀

90. 구조체 노드로 만든 이진 트리의 세 가지 순회

다음 C 프로그램의 실행 결과를 쓰시오.

1#include <stdio.h>
2#include <stdlib.h>
3
4struct Node {
5 char key;
6 struct Node *left;
7 struct Node *right;
8};
9
10struct Node *make(char k, struct Node *l, struct Node *r) {
11 struct Node *n = (struct Node *)malloc(sizeof(struct Node));
12 n->key = k;
13 n->left = l;
14 n->right = r;
15 return n;
16}
17
18void walk(struct Node *t, int mode) {
19 if (t == NULL) return;
20 if (mode == 0) printf("%c", t->key);
21 walk(t->left, mode);
22 if (mode == 1) printf("%c", t->key);
23 walk(t->right, mode);
24 if (mode == 2) printf("%c", t->key);
25}
26
27void release(struct Node *t) {
28 if (t == NULL) return;
29 release(t->left);
30 release(t->right);
31 free(t);
32}
33
34int main() {
35 struct Node *g = make('G', NULL, NULL);
36 struct Node *d = make('D', NULL, g);
37 struct Node *p = make('P', NULL, NULL);
38 struct Node *t = make('T', p, NULL);
39 struct Node *root = make('M', d, t);
40 for (int m = 0; m < 3; m++) {
41 walk(root, m);
42 printf("\n");
43 }
44 release(root);
45 return 0;
46}

해설을 먼저 보면 이후 정답 시 점수가 50%만 반영됩니다.