본문 바로가기

Algorithm/BAEKJOON

[BOJ] 1991번 트리 순회 (C++)

728x90
반응형

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

 

1991번: 트리 순회

첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파

www.acmicpc.net

 

#include <iostream>
using namespace std;

pair<int, int> edge[26];

void pre(char cur) {
    if (cur == '.') return;

    cout << cur;
    pre(edge[cur - 'A'].first);
    pre(edge[cur - 'A'].second);
}

void in(char cur) {
    if (cur == '.') return;

    in(edge[cur - 'A'].first);
    cout << cur;
    in(edge[cur - 'A'].second);
}

void post(char cur) {
    if (cur == '.') return;

    post(edge[cur - 'A'].first);
    post(edge[cur - 'A'].second);
    cout << cur;
}

int main() {
    int n;
    cin >> n;

    for (int i = 0; i < n; i++) {
        char node, left, right;
        cin >> node >> left >> right;
        edge[node - 'A'] = { left, right };
    }

    pre('A');
    cout << '\n';
    in('A');
    cout << '\n';
    post('A');
    return 0;
}
728x90
반응형