문제풀이/백준

백준 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;
}