https://www.acmicpc.net/problem/1991
트리를 딕셔너리에 {노드:[leftchild, rightchild]}로 저장을 한다. 그리고 왼쪽과 오른쪽을 제귀함수로 호출한다.
inorder는 (왼쪽 자식)/(노드)/(오른쪽 자식)
preorder는 (노드)/(왼쪽 자식)/(오른쪽 자식)
postorder는 (왼쪽 자식)/(오른쪽 자식)/(노드)
로 출력하기 때문에 이 순서대로 제귀 호출과 print를 작성한다.
from sys import stdin
n = int(input())
tree = {}
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='')
for i in range(n):
node, left, right = input().split()
tree[node] = [left,right]
preorder('A')
print()
inorder('A')
print()
postorder('A')