https://www.acmicpc.net/problem/1991


재귀로 트리 순회를 구현해주면 된다.


무조건 대문자로 들어온다고 했기 때문에 'A'를 빼주면서 A부터 0에 대응되도록 인덱스를 잡아준다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<iostream>
using namespace std;
struct NODE {
    char left;
    char right;
}tree[27];
void preOrder(char root) {
    if (root == '.'return;
    cout << root;
    preOrder(tree[root-'A'].left);
    preOrder(tree[root-'A'].right);
}
void inOrder(char root) {
    if (root == '.'return;
    inOrder(tree[root - 'A'].left);
    cout << root;
    inOrder(tree[root - 'A'].right);
}
void postOrder(char root) {
    if (root == '.')return;
    postOrder(tree[root - 'A'].left);
    postOrder(tree[root - 'A'].right);
    cout << root;
}
int main(void) {
    int n;
    cin >> n;
    while (n--) {
        char parent, l, r;
        cin >> parent >> l >> r;
        tree[parent - 'A'].left = l;
        tree[parent - 'A'].right = r;
    }
    preOrder('A');
    cout << '\n';
    inOrder('A');
    cout << '\n';
    postOrder('A');
}
cs


+ Recent posts