(Python) 백준 1991번 트리 순회 - class 4

[문제 링크]

1991번 트리 순회


ord와 chr 내장함수를 사용하여 A부터 0으로 테이블을 만들었다. 나머지는 재귀로 구현했다.

BLANK = ord('.') - ord('A')  # 자식노드가 없는 경우


# 전위 순회
def front(root):
    global ans_front
    ans_front += chr(root + ord('A'))

    # 왼쪽에 자식 노드가 있다면
    if graph[root][0] != BLANK:
        front(graph[root][0])

    # 오른쪽 자식 노드가 있다면
    if graph[root][1] != BLANK:
        front(graph[root][1])


# 중위 순회
def mid(root):
    global ans_mid
    # 왼쪽에 자식 노드가 있다면
    if graph[root][0] != BLANK:
        mid(graph[root][0])

    ans_mid += chr(root + ord('A'))

    # 오른쪽 자식 노드가 있다면
    if graph[root][1] != BLANK:
        mid(graph[root][1])


# 후위 순회
def back(root):
    global ans_back
    # 왼쪽에 자식 노드가 있다면
    if graph[root][0] != BLANK:
        back(graph[root][0])

    # 오른쪽 자식 노드가 있다면
    if graph[root][1] != BLANK:
        back(graph[root][1])

    ans_back += chr(root + ord('A'))


n = int(input())

graph = [[] for _ in range(26)]
ans_front = ""
ans_mid = ""
ans_back = ""

# 그래프 정보 입력
for _ in range(n):
    a, b, c = input().split()
    graph[ord(a) - ord('A')] = [ord(b) - ord('A'), ord(c) - ord('A')]

front(0)
mid(0)
back(0)
print(ans_front)
print(ans_mid)
print(ans_back)

나중에 찾아보고 알았는데 전위 순회는 pre order, 중위 순회는 in-order, 후위 순회는 post-order라고 한다.


© 2021. By Backtony