class Node:
def __init__(self, value, lchild = None, rchild = None):
self.value = value
self.lchild = lchild
self.rchild = rchild
N = int(input())
tree = {}
for _ in range(N):
node, left, right = input().split(" ")
tree[node] = Node(node, left, right)
def pre_order(node_num):
node = tree[node_num]
print(node.value, end="")
if node.lchild != ".":
pre_order(node.lchild)
if node.rchild != ".":
pre_order(node.rchild)
def in_order(node_num):
node = tree[node_num]
if node.lchild != ".":
in_order(node.lchild)
print(node.value, end="")
if node.rchild != ".":
in_order(node.rchild)
def post_order(node_num):
node = tree[node_num]
if node.lchild != ".":
post_order(node.lchild)
if node.rchild != ".":
post_order(node.rchild)
print(node.value, end="")
pre_order("A")
print()
in_order("A")
print()
post_order("A")
트리를 구성하는데 여러가지 방법이 있겠지만, 이렇게 Node 클래스를 만들고 Node의 data 를 key로 하는 딕셔너리로 트리를 유지하는 것도 괜찮은 방법이다.