🧩PS/🥈Nomal
[C/C++] 백준 1991번 - 트리 순회
Cocoon_
2021. 3. 14. 16:01
반응형
<코드>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int N;
char P, L, R;
int parent[26][2];
void preorder(char root) // 전위순회
{
if (root == '.') return;
else
{
cout << root;
preorder(parent[root - 'A'][0]);
preorder(parent[root - 'A'][1]);
}
}
void inorder(char root) // 중위순회
{
if (root == '.') return;
else
{
inorder(parent[root - 'A'][0]);
cout << root;
inorder(parent[root - 'A'][1]);
}
}
void postorder(char root) // 후위순회
{
if (root == '.') return;
else
{
postorder(parent[root - 'A'][0]);
postorder(parent[root - 'A'][1]);
cout << root;
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> P >> L >> R;
parent[P - 'A'][0] = L;
parent[P - 'A'][1] = R;
}
preorder('A');
cout << '\n';
inorder('A');
cout << '\n';
postorder('A');
cout << '\n';
}
풀이 방법
전위순회 : 루트 - 왼쪽자식 - 오른쪽자식
중위순회 : 왼쪽자식 - 루트 - 오른쪽자식
후위순회 : 왼쪽자식 - 오른쪽자식 - 루트
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자
www.acmicpc.net
반응형