문제풀이/백준
백준 1991 트리 순회
레옹
2021. 7. 2. 21:23
기본적인 트리 순회 구조문제
이 문제에선 전위, 중위, 후위 순회 순서로 출력하라고 한다. 이게 무슨 소리냐면
전위 - 부모 좌 우
중위 - 좌 부모 우
후위 - 좌 우 부모
순서로 순회를 하라는 소리다
#include <iostream>
#include <vector>
using namespace std;
int TreeNum = 0;
vector<vector<char>> arr(26, vector<char>(3, 0));
void PreOrder(char node) {
if (node == '.')
return;
int nodeNum = (int)node - 65;
cout << node;
PreOrder(arr[nodeNum][0]);
PreOrder(arr[nodeNum][1]);
}
void InOrder(char node) {
if (node == '.')
return;
int nodeNum = (int)node - 65;
InOrder(arr[nodeNum][0]);
cout << node;
InOrder(arr[nodeNum][1]);
}
void PostOrder(char node) {
if (node == '.')
return;
int nodeNum = (int)node - 65;
PostOrder(arr[nodeNum][0]);
PostOrder(arr[nodeNum][1]);
cout << node;
}
int main(void) {
cin >> TreeNum;
for (int i = 0; i < TreeNum; i++) {
char c;
cin >> c;
int num = (int)c - 65;
cin >> arr[num][0];
cin >> arr[num][1];
}
PreOrder('A');
cout << endl;
InOrder('A');
cout << endl;
PostOrder('A');
return 0;
}