본문 바로가기

프로그래밍/백준

백준 1991 트리의 순회 - 파이썬

문제.

풀이.

트리의 순회만 안다면 매우 쉽게 풀  수 있다.

전위 순회 = 루트, 왼쪽 , 오른쪽

중위 순회 = 왼쪽, 루트, 오른쪽

후위 순회 = 왼쪽, 오른쪽, 루트

이다.

딕셔너리를 이용하여 풀었다.

 

import sys

# 전위순회
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='')

input = sys.stdin.readline
n = int(input())
tree = {}
for i in range(n):
    root, left, rigth = map(str, input().split())
    tree[root] = [left, rigth]

preorder('A')
print()
inorder('A')
print()
postorder('A')