코팅테스트/백준 문제 모음
백준 1991번 파이썬 문제풀이(트리 순회)
유지광이
2022. 3. 16. 17:53
728x90
기존의 숫자처리가아닌 알파벳으로 트리를 처리해야하는 문제이다. 딕셔너리와 아스키 코드를 이용하여 문제를 해결하였다.
# 전위 순회
def pre_order(v):
if v:
print(v, end="")
pre_order(tree[v][0])
pre_order(tree[v][1])
# 중위 순회
def in_order(v):
if v:
in_order(tree[v][0])
print(v, end="")
in_order(tree[v][1])
# 후위 순회
def post_order(v):
if v:
post_order(tree[v][0])
post_order(tree[v][1])
print(v, end="")
N = int(input())
tree = {}
for i in range(65, 65 + N):
tree[chr(i)] = ['', '', ''] # 왼쪽자식,오른쪽자식,부모
for _ in range(N):
node, left, right = map(str, input().split())
if left.isalpha():
tree[node][0] = left
tree[left][2] = node
if right.isalpha():
tree[node][1] = right
tree[right][2] = node
pre_order('A')
print()
in_order('A')
print()
post_order('A')
print()
728x90