Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 카카오인턴
- c++
- 알고리즘
- 투포인터
- 카카오
- 유니온파인드
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- Union-find
- LIS #Algorithm #요소추적
- 소감
- 서버개발캠프
- 스마일게이트
- BFS
- 중반부
- 코딩테스트
- 삼성 #코테 #2020상반기 #c++
- 백준
- Algorithm
- 식단
- Smilegate
- 1편
- 보석쇼핑
- 코테
- BaekJoon
Archives
- Today
- Total
짱아의 개발 기록장
백준 9934번. 완전 이진 트리(c++) / Tree 본문
반응형
중위순위의 특징?을 통해서 풀 수 있는 문제이다.
중위순회의 특징은 Start~End의 범위를 가지고 있는 배열에서 Mid = (Start+End)/2;의 값이 루트가 된다는 것이다.
그렇게 계속 재귀를 돌면, level별로 노드를 구할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | // 완전이진트리 #include <iostream> #include <vector> using namespace std; int k, node; vector<int> height[11]; int arr[1100] = {0, }; void dfs(int Start, int End, int level) { int mid = (Start+End)/2; height[level].push_back(arr[mid]); if(Start==End){ return; } dfs(Start, mid-1, level+1); dfs(mid+1, End, level+1); } int main() { cin>>k; int cnt = 1; for(int i=0; i<k; i++){ cnt *= 2; } cnt -= 1; for(int i=0; i<cnt; i++){ cin>>node; arr[i] = node; } dfs(0, cnt-1, 1); for(int i=1; i<=k; i++){ for(int j=0; j<height[i].size(); j++){ cout<<height[i][j]<<" "; } cout<<"\n"; } return 0; } | cs |
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
백준 1766번. 문제집(c++) / 위상정렬 (0) | 2021.04.07 |
---|---|
백준 3109번. 빵집(c++) / Greedy (0) | 2021.04.06 |
백준 1600번. 말이 되고픈 원숭이(c++) / BFS (0) | 2021.04.05 |
백준 9461번. 파도반 수열(c++) / DP (0) | 2021.04.04 |
백준 4803번. 트리(c++) / 유니온파인드 (0) | 2021.04.02 |
Comments