Gidhub BE Developer

[BOJ] 1991. 트리순회

2018-09-13
goodGid

Problem

Problem URL : 트리 순회

Screenshots of Problem Explain

[1] Answer Code (17. 12. 21)

#include<iostream>
#include<vector>
using namespace std;

vector<pair<char, char>> v[30];

void preOrder(char root){
    char l = v[root-'A'].front().first;
    char r = v[root-'A'].front().second;
    
    printf("%c",root);
    if( l != '.')
        preOrder(l);
    if( r != '.')
        preOrder(r);
}

void inOrder(char root){
    char l = v[root-'A'].front().first;
    char r = v[root-'A'].front().second;
    
    if( l != '.')
        inOrder(l);
    printf("%c",root);
    if( r != '.')
        inOrder(r);
}

void postOrder(char root){
    char l = v[root-'A'].front().first;
    char r = v[root-'A'].front().second;
    
    if( l != '.')
        postOrder(l);
    if( r != '.')
        postOrder(r);
    printf("%c",root);
}

int main(){
    int n;
    cin >> n;
    
    for(int i=0; i<n; i++){
        char m,l,r;
        scanf(" %c %c %c",&m,&l,&r);
        v[m-'A'].push_back(make_pair(l, r));
    }

    preOrder('A'); cout<< endl;
    inOrder('A'); cout<< endl;
    postOrder('A'); cout<< endl;
    
    return 0;
}

[2] Answer Code (18. 09. 13)

#include<iostream>
using namespace std;

int tree[30][3];

void preOrder(int idx){
    printf("%c",tree[idx][0]+65);
    if( tree[idx][1] != -1)
        preOrder(tree[idx][1]);
    if( tree[idx][2] != -1)
        preOrder(tree[idx][2]);
}

void inOrder(int idx){
    if( tree[idx][1] != -1)
        inOrder(tree[idx][1]);
    printf("%c",tree[idx][0]+65);
    if( tree[idx][2] != -1)
        inOrder(tree[idx][2]);
}

void postOrder(int idx){
    if( tree[idx][1] != -1)
        postOrder(tree[idx][1]);
    if( tree[idx][2] != -1)
        postOrder(tree[idx][2]);
    printf("%c",tree[idx][0]+65);
}

int main(){
    int n;
    cin >> n;
    
    while (n--) {
        char a,b,c;
        scanf(" %c %c %c",&a, &b, &c);
        tree[ a-65 ][0] = a - 65;
        b != '.' ? tree[ a-65 ][1] = b - 65 : tree[ a-65 ][1] =-1;
        c != '.' ? tree[ a-65 ][2] = c - 65 : tree[ a-65 ][2] = -1;
    }
    preOrder(0);
    cout << endl;
    inOrder(0);
    cout << endl;
    postOrder(0);
    return 0;
}

Review

  • SK Hynix 코테 준비할겸 다시 풀어봤다.

  • 코테에서는 STL사용이 불가하기에 Vector를 사용하지 않고 배열로 풀었다.

  • 관련된 Key Point도 있으니 한번 보는것을 추천 !


Comments

Content