728x90
반응형
import sys
n = int(sys.stdin.readline())
tree = {}
for _ in range(n):
root, left, right = sys.stdin.readline().split()
tree[root] = [left, right] # {'root' : ['left', 'right']} 형태로 저장한다
def preorder(root): # 전위 순회
if root != '.':
print(root, end='')
preorder(tree[root][0])
preorder(tree[root][1])
def inorder(root): # 중위 순회
if root != '.':
inorder(tree[root][0])
print(root, end='')
inorder(tree[root][1])
def postorder(root): # 후위 순회
if root != '.':
postorder(tree[root][0])
postorder(tree[root][1])
print(root, end='')
preorder('A')
print()
inorder('A')
print()
postorder('A')
그래프, 트리 문제이다. 그래프와 트리에 대한 대략적인 이해와 전위/중위/후위 순회가 무엇인지 선행학습이 필요한 문제이다. 트리의 연결관계를 인접 행렬 형태로 입력받아 문제를 해결했다.
선행학습이 되어 있다면 문제 자체는 크게 어렵지 않다. 다만 아예 처음 해 보는 사람은 순서대로 노드에 들리는 코드를 어떤 식으로 짜야 할 지 감이 안 올 수도 있겠다. 나도 처음이라 그랬다.
한번 코드를 짜고 나면 매우 쉽게 느껴질 문제이다.
728x90
반응형
'Algorithm > Graph' 카테고리의 다른 글
[Baekjoon 1707 / python / 골드4] 이분 그래프 (2) | 2024.04.03 |
---|---|
[Baekjoon 1197 / python / 골드4] 최소 스패닝 트리 (0) | 2024.04.03 |
[Baekjoon 5639 / python / 골드5] 이진 검색 트리 (4) | 2024.03.29 |