(백준 알고리즘 문제풀이) 1991번 트리 순회
by 줌코딩
문제
문제 접근법
- 전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식)
- 중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식)
- 후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트)
코드
#include <cstdio>
#include <vector>
using namespace std;
int n;
char s, a, b;
vector< vector<int> > v;
void preorder(int n){
if(n == 0) return;
printf("%c", 'A' + n - 1);
preorder(v[n][0]);
preorder(v[n][1]);
}
void inorder(int n){
if(n == 0)return;
inorder(v[n][0]);
printf("%c", 'A' + n - 1);
inorder(v[n][1]);
}
void postorder(int n){
if(n == 0) return;
postorder(v[n][0]);
postorder(v[n][1]);
printf("%c", 'A' + n - 1);
}
int main(){
v = vector< vector<int> > (27, vector<int>(2,0));
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf(" %c %c %c", &s, &a, &b);
if(a != '.')v[s - 'A' + 1][0] = a - 'A' + 1;
if(b != '.')v[s - 'A' + 1][1] = b - 'A' + 1;
}
preorder(1); printf("\n");
inorder(1); printf("\n");
postorder(1);
}
느낀점
- 트리 순회는 이지했다~~ㅎㅎ
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Subscribe via RSS