https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
#include <iostream>
#include <map>
using namespace std;
struct treestruct {
char left;
char right;
};
map <char, treestruct> tree;
void preorder(char node) {
if (node == '.') return;
cout << node;
preorder(tree.find(node)->second.left);
preorder(tree.find(node)->second.right);
}
void inorder(char node) {
if (node == '.') return;
inorder(tree.find(node)->second.left);
cout << node;
inorder(tree.find(node)->second.right);
}
void postorder(char node) {
if (node == '.') return;
postorder(tree.find(node)->second.left);
postorder(tree.find(node)->second.right);
cout << node;
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
char node, left, right;
cin >> node >> left >> right;
tree.insert({ node, treestruct{left, right} });
}
preorder('A');
cout << endl;
inorder('A');
cout << endl;
postorder('A');
return 0;
}
설계