반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
주어진 트리를 '전위', '중위', '후위' 탐색하는 문제입니다.
전위 순회: 중간 -> 왼쪽 -> 오른쪽
중위 순회: 왼쪽 -> 중간 -> 오른쪽
후위 순회: 왼쪽 -> 오른쪽 -> 중간
자료구조 단골 시험문제죠. "주어진 트리를 전위/중위/후위 순회하시오."
전위와 중위는 탐색 경로는 같으나, '방문'하는 시점이 다릅니다. '전위'는 루트부터 찍고 왼쪽 오른쪽을 탐색하고, '중위'는 왼쪽부터 탐색하고 중간, 오른쪽으로 탐색합니다.
'후위'는 왼쪽, 오른쪽, 중간 순서로 탐색합니다.
3. 코드
import sys
input = sys.stdin.readline
# 입력
n = int(input())
tree = {}
for _ in range(n):
root, left, right = input().rstrip().split()
tree[root] = [left, right]
# 전위 순회
def preorder(root):
if root != '.':
print(root, end='') # root
preorder(tree[root][0]) # left
preorder(tree[root][1]) # right
# 중위 순회
def inorder(root):
if root != '.':
inorder(tree[root][0]) # left
print(root, end='') # root
inorder(tree[root][1]) # right
# 후위 순회
def postorder(root):
if root != '.':
postorder(tree[root][0]) # left
postorder(tree[root][1]) # right
print(root, end='') # root
# 출력
preorder('A')
print()
inorder('A')
print()
postorder('A')
반응형
'Algorithm' 카테고리의 다른 글
[구현/수학] 백준 8723 Patyki - 파이썬(Python) (1) | 2022.09.23 |
---|---|
[구현/수학] 백준 15051 Máquina de café - 파이썬(Python) (0) | 2022.09.22 |
[구현/수학] 백준 21335 Another Eruption - 파이썬(Python) (2) | 2022.09.20 |
[구현/수학] 백준 8710 Koszykarz - 파이썬(Python) (0) | 2022.09.19 |
[Greedy/그리디] 백준 16435 스네이크버드 - 파이썬(Python) (0) | 2022.09.18 |
댓글