https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
#include <iostream>
#include <vector>
using namespace std;
int n;
vector<char> v[27];
void pre(int x){ //root -> left -> right
if(x==-1) return;
cout<<(char)(x+'A');
pre(v[x][0]);
pre(v[x][1]);
}
void in(int x){ //left -> root -> right
if(x==-1) return;
in(v[x][0]);
cout<<(char)(x+'A');
in(v[x][1]);
}
void post(int x){ //left ->right->root
if(x==-1) return;
post(v[x][0]);
post(v[x][1]);
cout<<(char)(x+'A');
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(NULL);
cin>>n;
for(int i=0;i<n;i++){
char x,y,z;
cin>>x>>y>>z;
if(y=='.') v[x-'A'].push_back(-1);
else v[x-'A'].push_back(y-'A');
if(z=='.') v[x-'A'].push_back(-1);
else v[x-'A'].push_back(z-'A');
}
pre(0);
cout<<"\n";
in(0);
cout<<"\n";
post(0);
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 1167번 : 트리의 지름 (0) | 2024.02.27 |
---|---|
[C++] 백준 1068번 : 트리 (0) | 2024.02.27 |
[C++] 백준 1759번 : 암호만들기 (0) | 2024.02.23 |
[C++] 백준 15686번 : 치킨 배달 (0) | 2024.02.18 |
[C++] 백준 14889번 : 스타트와 링크 (0) | 2024.02.18 |