문제에서 주어진 노드간의 관계를 트리 형태의 자료구조에 적절하게 저장하고, 그 안에서 탐색을 수행하면 된다.
따라서 인접리스트의 형태로 트리의 관계를 표현하고, 재귀함수를 통해 탐색을 수행하여 문제를 해결하면된다.
import sys
sys.setrecursionlimit(10 ** 6)
input = sys.stdin.readline
N = int(input())
arr = [[] for _ in range(26)]
for _ in range(N):
node, left, right = input().split()
arr[ord(node) - ord('A')].append((left, right))
def preorder(node):
if node != '.':
left, right = arr[ord(node) - ord('A')][0]
print(node, end='')
preorder(left)
preorder(right)
def inorder(node):
if node != '.':
left, right = arr[ord(node) - ord('A')][0]
inorder(left)
print(node, end='')
inorder(right)
def postorder(node):
if node != '.':
left, right = arr[ord(node) - ord('A')][0]
postorder(left)
postorder(right)
print(node, end='')
preorder('A')
print()
inorder('A')
print()
postorder('A')