https://www.acmicpc.net/problem/1991
이진 트리에 대한 정보를 unordered_map을 통해 저장하고 이를 재귀함수를 통해 전위,중위,후위함수를 통해 순회하면서 출력해주면 된다.
정답코드
#include <iostream>
#include <unordered_map>
using namespace std;
unordered_map<char, pair<char, char>> tree;
//전위 순회
void preorder(char node)
{
if (node == '.')return;
cout << node;
preorder(tree[node].first);
preorder(tree[node].second);
}
//중위순회
void inorder(char node)
{
if (node == '.')return;
inorder(tree[node].first);
cout << node;
inorder(tree[node].second);
}
//후위순회
void postorder(char node)
{
if (node == '.')return;
postorder(tree[node].first);
postorder(tree[node].second);
cout << node;
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
char parent, left, right;
cin >> parent >> left >> right;
tree[parent] = { left, right }; // 부모와 자식 관계 저장
}
preorder('A');
cout << "\n";
inorder('A');
cout << "\n";
postorder('A');
cout << "\n";
return 0;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][C++]7562번. 나이트의 이동 (0) | 2024.11.24 |
---|---|
[백준][C++]1167번. 트리의 지름 (0) | 2024.11.23 |
[백준][C++]11725번. 트리의 부모 찾기 (0) | 2024.11.21 |
[백준][C++]11660번. 구간 합 구하기5 (0) | 2024.11.20 |
[백준][C++]16139번. 인간-컴퓨터 상호작용 (0) | 2024.11.19 |