반응형
![[백준 9934번 / C++] 완전 이진 트리 [백준 9934번 / C++] 완전 이진 트리](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
dfs 문제이다.
* 중위 순회의 흐름 차순은 L - Root - R 순이다.
#접근방법
- 답을 저장할 이차원 벡터와 데이터를 저장할 일차원 벡터 생성.
- 시작 포인터와 끝 포인터를 지정하여 그 중간점을 매개변수로 전달하여 왼쪽 자식 노드의 끝까지 들어간다.
- level 이 입력받은 깊이의 수와 동일하다면 return.
- 해당 레벨에 위치의 이차원벡터에 현재 담고있는 데이터의 값을 담아준다.
- 우측 자식 노드로 재귀함수를 호출한다.
#include <iostream>
#include <vector>
using namespace std;
int n;
vector <vector<int>> v;
void dfs(int s, int e, int level, vector<int>& data) {
if (level==n) return;
int mid = (s + e) / 2;
dfs(s, mid - 1, level + 1, data);//왼쪽
v[level].push_back(data[mid]);
dfs(mid + 1, e, level + 1, data); //오른쪽
}
int main() {
cin >> n;
vector <int> data((1 << n) - 1);
int i;
for (i = 0; i < (1 << n) - 1; i++){
cin >> data[i];
}
int s = 0;
int e = --i;
v.resize(n);
dfs(s, e, 0, data);
for (int i = 0; i < n; i++) {
for (int j = 0; j < v[i].size(); j++) {
cout << v[i][j] << " ";
}cout << endl;
}
}
9934번: 완전 이진 트리
상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래...
www.acmicpc.net
반응형
'백준 > DFS BFS' 카테고리의 다른 글
[백준 7569번 / C++] 토마토 (0) | 2022.03.22 |
---|---|
[백준 6593번 / C++ ] 상범 빌딩 (0) | 2022.03.21 |
[백준 2573번 / C++] 빙산 (0) | 2022.03.14 |
[백준 16953번 / C++] A → B (0) | 2022.03.14 |
[백준 11048번 / C++] 이동하기 (0) | 2022.03.10 |
댓글