https://www.acmicpc.net/problem/1991

딕셔너리에 본인을 key로 왼쪽 오른쪽을 value로 넣어주고
차례대로 전위, 중위, 후위 순회를 돌면 된다.
전위순회 (루트) (왼쪽 자식) (오른쪽 자식)
노드가 비어있지 않으면 본인을 출력하고 왼쪽 재귀, 오른쪽 재귀를 차례로 돈다.
중위순회 (왼쪽 자식) (루트) (오른쪽 자식)
노드가 비어있지 않으면 왼쪽 돌고 본인을 출력하고 오른쪽 재귀를 돈다.
후위순회 (왼쪽 자식) (오른쪽 자식) (루트)
노드가 비어있지 않으면 왼쪽 돌고 오른쪽 돌고 본인을 출력한다.
import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
def preorder(node): #전위 : 본인왼오
if node != '.':
print(node, end='')
preorder(tree[node][0])
preorder(tree[node][1])
def inorder(node): # 중위 : 왼본인오
if node != '.':
inorder(tree[node][0])
print(node, end='')
inorder(tree[node][1])
def postorder(node): # 왼오본인
if node != '.':
postorder(tree[node][0])
postorder(tree[node][1])
print(node, end='')
tree = {}
n = int(input()) # 노드 수
for i in range(n):
x, y, z = input().split() # 본인 왼쪽 오른쪽
tree[x] = [y, z]
preorder('A')
print()
inorder('A')
print()
postorder('A')