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