For Programmer

백준 1991번 파이썬 문제풀이(트리 순회) 본문

코팅테스트/백준 문제 모음

백준 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
Comments