Skip to content

Commit 1c86be3

Browse files
committed
[Silver I] Title: 트리 순회, Time: 88 ms, Memory: 108384 KB -BaekjoonHub
1 parent 8aac4c5 commit 1c86be3

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# [Silver I] 트리 순회 - 1991
2+
3+
[문제 링크](https://www.acmicpc.net/problem/1991)
4+
5+
### 성능 요약
6+
7+
메모리: 108384 KB, 시간: 88 ms
8+
9+
### 분류
10+
11+
재귀, 트리
12+
13+
### 제출 일자
14+
15+
2025년 4월 15일 20:09:00
16+
17+
### 문제 설명
18+
19+
<p>이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오.</p>
20+
21+
<p style="text-align: center;"><img alt="" src="https://www.acmicpc.net/JudgeOnline/upload/201007/trtr.png" style="height:220px; width:265px"></p>
22+
23+
<p>예를 들어 위와 같은 이진 트리가 입력되면,</p>
24+
25+
<ul>
26+
<li>전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식)</li>
27+
<li>중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식)</li>
28+
<li>후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트)</li>
29+
</ul>
30+
31+
<p>가 된다.</p>
32+
33+
### 입력
34+
35+
<p>첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파벳 대문자로 매겨지며, 항상 A가 루트 노드가 된다. 자식 노드가 없는 경우에는 .으로 표현한다.</p>
36+
37+
### 출력
38+
39+
<p>첫째 줄에 전위 순회, 둘째 줄에 중위 순회, 셋째 줄에 후위 순회한 결과를 출력한다. 각 줄에 N개의 알파벳을 공백 없이 출력하면 된다.</p>
40+
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import sys
2+
3+
N = int(sys.stdin.readline())
4+
tree = {}
5+
6+
for n in range(N):
7+
root, left, right = sys.stdin.readline().strip().split()
8+
tree[root] = [left, right]
9+
10+
def preorder(root):
11+
if root != '.':
12+
print(root, end='')
13+
preorder(tree[root][0])
14+
preorder(tree[root][1])
15+
16+
def inorder(root):
17+
if root != '.':
18+
inorder(tree[root][0])
19+
print(root, end='')
20+
inorder(tree[root][1])
21+
22+
def postorder(root):
23+
if root != '.':
24+
postorder(tree[root][0])
25+
postorder(tree[root][1])
26+
print(root, end='')
27+
28+
preorder('A')
29+
print()
30+
inorder('A')
31+
print()
32+
postorder('A')

0 commit comments

Comments
 (0)