티스토리 뷰
https://www.acmicpc.net/problem/2263
2263번: 트리의 순회
첫째 줄에 n(1 ≤ n ≤ 100,000)이 주어진다. 다음 줄에는 인오더를 나타내는 n개의 자연수가 주어지고, 그 다음 줄에는 같은 식으로 포스트오더가 주어진다.
www.acmicpc.net
트리를 순회하는 3가지 방법, preOrder, inOrder, postOrder에 대해서 더 자세히 생각해본 좋은 문제였다.
문제에서 주어지는건 이진트리의 inOrder와 postOrder의 결과이다.
postOrder: Left -> Right -> Root
따라서 postOrder에서 마지막에 오는 노드가 루트노드다.
inOrder: Left -> Root -> Right
따라서 inOrder 에서 루트 노드 기준으로 왼쪽에 있는 노드들이 left child, 오른쪽에 있는 노드들이 right child 다.
이 법칙에 따라 postOrder의 left child 부분, right child 부분
inOrder의 left child 부분, right child 부분 을 나눠서 재귀적으로 함수를 만들면 된다.
이 과정에서 postOrder의 마지막 부분이 항상 루트이기 때문에 루트값을 출력 -> left child -> right child 순으로 호출하면 자연스럽게 preOrder가 된다.
'PS' 카테고리의 다른 글
| 백준 2170. 선 긋기 (0) | 2022.11.24 |
|---|---|
| 백준 18353. 병사 배치하기 (0) | 2022.11.22 |
| 백준 1717. 집합의 표현 (0) | 2022.11.22 |
| 백준 1788. 피보나치 수의 확장 (0) | 2022.11.21 |
| 백준 1715. 카드 정렬하기 (0) | 2022.11.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- C
- dfs
- CSS
- Implementation
- permutation
- priority queue
- Brute Force
- floyd warshall
- db
- two pointer
- Python
- graph
- recursion
- Tree
- Unity
- MVC
- greedy
- 재귀
- Dijkstra
- 자료구조
- Kruskal
- 조합
- 이분탐색
- BFS
- C++
- DP
- Spring
- back tracking
- binary search
- Stack
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함
