https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
풀이
정말 오랜만에 보는 순회 문제이다.
사실.. 나는 전위, 중위, 후위를 구현하는 방법을 알고있어서 어렵지 않게 문제를 풀었다.
풀이할게 딱히 없고, preorder, inorder, postorder를 구현할줄 알면 어렵지 않게 푸는 문제이다.
Code ( C++ )
#include <iostream>
#define MAX 26
using namespace std;
int N;
typedef struct node
{
char left, right;
};
node nodes[MAX];
void preorder(char ch)
{
if (ch == '.')
return;
cout << ch;
preorder(nodes[ch - 'A'].left);
preorder(nodes[ch - 'A'].right);
}
void inorder(char ch)
{
if (ch == '.')
return;
inorder(nodes[ch - 'A'].left);
cout << ch;
inorder(nodes[ch - 'A'].right);
}
void postorder(char ch)
{
if (ch == '.')
return;
postorder(nodes[ch - 'A'].left);
postorder(nodes[ch - 'A'].right);
cout << ch;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> N;
char ch, left, right;
for(int i = 0; i < N; i++)
{
cin >> ch >> left >> right;
nodes[ch - 'A'].left = left;
nodes[ch - 'A'].right = right;
}
preorder('A');
cout << "\n";
inorder('A');
cout << "\n";
postorder('A');
}
'💻 OnlineJudge > Baekjoon' 카테고리의 다른 글
[백준 / BOJ] C++ 2407 조합 (0) | 2022.12.07 |
---|---|
[백준 / BOJ] C++ 2096 내려가기 (0) | 2022.11.28 |
[백준 / BOJ] C++ 1967 트리의 지름 (0) | 2022.11.25 |
[백준 / BOJ] C++ 1932 정수 삼각형 (0) | 2022.11.25 |
[백준 / BOJ] C++ 1918 후위 표기식 (0) | 2022.11.24 |