백준 1991 c++

magicdrill·2024년 3월 4일
0

백준 문제풀이

목록 보기
94/655

백준 1991 c++

#include <iostream>

using namespace std;

int N;
char graph[30][2];

int input(int lower, int upper)
{
	//cout << "input()" << endl;
	int A;

	while (1)
	{
		cin >> A;
		if (A >= lower && A <= upper)
		{
			break;
		}
		else
		{
			;
		}
	}

	return A;
}

void input_graph()
{
	int i;
	char root;
	char left, right;

	for (i = 0; i < N; i++)
	{
		cin >> root >> left >> right;
		graph[(int)root - 65][0] = left;
		graph[(int)root - 65][1] = right;
	}

	return;
}

void preorder_traversal(char temp)
{
	if (temp == '.')
	{
		return;
	}
	else
	{
		cout << temp;
		preorder_traversal(graph[(int)temp - 65][0]);
		preorder_traversal(graph[(int)temp - 65][1]);
	}
}

void inorder_traversal(char temp)
{
	if (temp == '.')
	{
		return;
	}
	else
	{
		inorder_traversal(graph[(int)temp - 65][0]);
		cout << temp;
		inorder_traversal(graph[(int)temp - 65][1]);
	}
}

void postorder_traversal(char temp)
{
	if (temp == '.')
	{
		return;
	}
	else
	{
		postorder_traversal(graph[(int)temp - 65][0]);
		postorder_traversal(graph[(int)temp - 65][1]);
		cout << temp;
	}
}

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	N = input(1, 26);
	input_graph();
	preorder_traversal('A');
	cout << "\n";
	inorder_traversal('A');
	cout << "\n";
	postorder_traversal('A');
	cout << "\n";

	return 0;
}

0개의 댓글