
알고리즘 문제 풀이
문제
https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
풀이
재귀호출을 이용한 전중후 위 탐색을 실행하는 코드 작성을 요한다
순회의 개념을 알고 있다면 재귀호출에서 출력문의 위치만 전중후에 맞게 배치한다면 어려움이 없는 문제이다
소스 코드
#include <iostream>
#include <string>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <map>
#include <cctype>
#include <set>
#include <string.h>
using namespace std;
int N;
char arr[26][2];
void preorder(char c) {
if (c == '.')
return;
cout << c;
preorder(arr[c - 65][0]);
preorder(arr[c - 65][1]);
}
void inorder(char c) {
if (c == '.')
return;
inorder(arr[c - 65][0]);
cout << c;
inorder(arr[c - 65][1]);
}
void postorder(char c) {
if (c == '.')
return;
postorder(arr[c - 65][0]);
postorder(arr[c - 65][1]);
cout << c;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N;
for (int i = 0; i < N; i++) {
char input;
cin >> input;
cin >> arr[input - 65][0] >> arr[input - 65][1];
}
preorder('A');
cout << '\n';
inorder('A');
cout << '\n';
postorder('A');
cout << '\n';
}'Programming Practice > BOJ' 카테고리의 다른 글
| [BOJ] 백준 16953 스티커 - S2 (C++) (0) | 2022.06.17 |
|---|---|
| [BOJ] 백준 9465 스티커 (C++) (0) | 2022.04.27 |
| [BOJ] 백준 1932 정수 삼각형 (C++) (0) | 2022.04.24 |
| [BOJ] 백준 2407 조합 (C++) (0) | 2022.04.21 |
| [BOJ] 백준 15650 N과 M (2) (C++) (0) | 2022.04.20 |