되면한다
백준 1991. 트리 순회(전위, 중위, 후위 순회) 본문
https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
트리의 전위 중위 후위 순회
#include <iostream>
#include <unordered_set>
#include <vector>
#include <stack>
using namespace std;
int n;
int lc[30];
int rc[30];
int p[30];
char _my, _left, _right;
int _myi, _lefti, _righti;
void dfs(int cur)
{
cout << char(cur+'A');
if(lc[cur]) dfs(lc[cur]);
if(rc[cur]) dfs(rc[cur]);
}
void dfs1(int cur)
{
if(lc[cur]) dfs1(lc[cur]);
cout << char(cur+'A');
if(rc[cur]) dfs1(rc[cur]);
}
void dfs2(int cur)
{
if(lc[cur]) dfs2(lc[cur]);
if(rc[cur]) dfs2(rc[cur]);
cout << char(cur+'A');
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for(int i = 0; i < n; i++)
{
cin >> _my >> _left >> _right;
_myi = int(_my - 'A');
_lefti = int(_left - 'A');
_righti = int(_right - 'A');
if(_lefti >= 0 && _lefti <= 26)
{
lc[_myi] = _lefti;
}
if(_righti >= 0 && _righti <= 26)
{
rc[_myi] = _righti;
}
}
dfs(0); cout << '\n'; fill(p, p + 29, 0);
dfs1(0); cout << '\n'; fill(p, p + 29, 0);
dfs2(0);
}
'코딩테스트준비' 카테고리의 다른 글
백준 1238. 파티 (다익스트라) (0) | 2023.08.14 |
---|---|
백준 3107. IPv6 (문자열) (0) | 2023.08.13 |
백준 11725. 트리의 부모 찾기 (트리 bfs, dfs) (0) | 2023.07.31 |
백준 1043. 거짓말 (그래프) (0) | 2023.07.31 |
백준 17140. 이차원 배열과 연산 (구현) (0) | 2023.07.30 |
Comments