백준[1991] - 트리 순회

문제

백준 1991 문제 보기

접근 방법

순회 시점에 따라 출력하고 재귀함수를 호출하면 정답이 출력된다. 트리의 왼쪽, 오른쪽 노드의 자료 표현을 위해 이치원 배열을 선언하고 [0]에는 왼쪽 노드를 [1]에는 오른쪽 노드를 저장했다.

코드

#include <iostream>

using namespace std;

int N;
int tree[26][2];

void preOrder(int node) {
    if(node == (int)('.' - 'A'))
        return;

    cout << (char)(node + 'A');
    preOrder(tree[node][0]);
    preOrder(tree[node][1]);
};

void inOrder(int node) {
    if(node == (int)('.' - 'A'))
        return;

    inOrder(tree[node][0]);
    cout << (char)(node + 'A');
    inOrder(tree[node][1]);
};

void postOrder(int node) {
    if(node == (int)('.' - 'A'))
        return;

    postOrder(tree[node][0]);
    postOrder(tree[node][1]);
    cout << (char)(node + 'A');
};

int main() {
    cin >> N;

    char a, b, c;
    for(int i = 0; i < N; i++) {
        cin >> a >> b >> c;

        tree[a - 'A'][0] = b - 'A';
        tree[a - 'A'][1] = c - 'A';
    }

    preOrder(0);
    cout << "\n";

    inOrder(0);
    cout << "\n";

    postOrder(0);
    return 0;
}
Share