6번 문제

내가 풀이한 답
- 전위순회(Preorder): 부모노드를 먼저 방문하고 자식 노드를 방문
- 중위순회(Inorder): 왼쪽 자식을 먼저 방문하고 부모노드를 방문
- 후위순회(Postorder): 자식 노드를 먼저 방문하고 부모노드를 방문

위의 그림과 같이 각 노드의 왼쪽에 있는 빨간색 점을 선으로 쭉 이어보면 전위순회가 완성된다. 중위순회와 후위순회도 마찬가지로 각각 초록색, 파란색 점을 선으로 이어보면 구할 수 있다.
#include <iostream> using namespace std; //전위순회 void pre(int v, int n){ if(v > n) return; else { cout << v << " "; pre(v*2, n); pre(v*2+1, n); } } //중위순회 void mid(int v, int n){ if(v > n) return; else { mid(v*2, n); cout << v << " "; mid(v*2+1, n); } } //후위순회 void aft(int v, int n){ if(v > n) return; else { aft(v*2, n); aft(v*2+1, n); cout << v << " "; } } int main() { //freopen("input.txt", "rt", stdin); ios_base::sync_with_stdio(false); int n; cin >> n; pre(1, n); cout << endl; mid(1, n); cout << endl; aft(1, n); return 0; }
사이트의 답안
#include<stdio.h> #include<vector> #include<algorithm> using namespace std; void D(int x){ if(x>7) return; else{ printf("%d ", x); D(x*2); D(x*2+1); } } int main(){ freopen("input.txt", "rt", stdin); D(1); return 0; }
'알고리즘 & 자료구조 > 그래프' 카테고리의 다른 글
8. 합이 같은 부분집합(DFS 완전탐색 : 아마존 인터뷰) (0) | 2020.10.22 |
---|---|
7. 부분집합(DFS 완전탐색) (0) | 2020.10.22 |
5. 최소비용(DFS : 가중치 방향그래프 인접리스트) (0) | 2020.09.23 |
4. 최소비용(DFS : 인접행렬) (0) | 2020.09.23 |
3. 경로 탐색(DFS : 인접리스트 방법) (0) | 2020.09.23 |