728x90
https://www.acmicpc.net/problem/1991
#include <iostream>
#include <tuple>
#include <vector>
#include <map>
using namespace std;
map<char, pair<char, char>> m;
void preorder(char root) {
cout << root;
if (m[root].first != '.')
preorder(m[root].first);
if (m[root].second != '.')
preorder(m[root].second);
}
void inorder(char root) {
if (m[root].first != '.')
inorder(m[root].first);
cout << root;
if (m[root].second != '.')
inorder(m[root].second);
}
void postorder(char root) {
if(m[root].first != '.')
postorder(m[root].first);
if(m[root].second != '.')
postorder(m[root].second);
cout << root;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
for (int i = 0; i < n; i++) {
char root, left, right;
cin >> root >> left >> right;
m[root] = make_pair(left, right);
}
preorder('A');
cout << '\n';
inorder('A');
cout << '\n';
postorder('A');
return 0;
}
자료구조 시간에 배운 것과 이런 문제를 풀 때 사용하는 자료구조에는 조금 거리가 있는 것 같다.
트리 구조체나 클래스를 직접 만들지 않아도 이렇게 풀 수 있다.
https://breakcoding.tistory.com/205
처음에는 이진트리 클래스를 직접 만들었었는데 insert하는 과정에서 위상정렬을 해야 트리에 노드를 삽입할 수 있었다.
따라서 그냥 편리하게 map을 만들었다. 다른 사람들은 어떻게 트리를 구현했는지 찾아봐야겠다.
728x90
'알고리즘 문제' 카테고리의 다른 글
[백준] 1526번 가장 큰 금민수 (0) | 2020.02.12 |
---|---|
[백준] 9237번 이장님 초대 (0) | 2020.02.12 |
[백준] 6376번 e 계산 (0) | 2020.02.11 |
[백준] 2979번 트럭 주차 (0) | 2020.02.11 |
[백준] 5532번 방학 숙제 (0) | 2020.02.11 |