[백준] 트리 순회

 

문제

import sys
input = sys.stdin.readline

class Node():
    def __init__(self, data, left=None, right=None, up = None):
        self.data = data
        self.left = left
        self.right = right
        self.up = up

def preorder(node):
    print(node.data, end = '')
    if node.left:
        preorder(node.left)
    if node.right:
        preorder(node.right)

def inorder(node):
    if node.left:
        inorder(node.left)
    print(node.data, end = '')
    if node.right:
        inorder(node.right)

def postorder(node):
    if node.left:
        postorder(node.left)
    if node.right:
        postorder(node.right)
    print(node.data, end = '')
    
n = int(input())

graph = {}

for _ in range(n):
    a, b, c = input().split()

    if a not in graph:
        graph[a] = Node(a)
    parent = graph[a]

    if b != '.':
        if b not in graph:
            graph[b] = Node(b)
        parent.left = graph[b]
        graph[b].up = parent

    if c != '.':
        if c not in graph:
            graph[c] = Node(c)
        parent.right = graph[c]
        graph[c].up = parent

preorder(graph['A'])
print()
inorder(graph['A'])
print()
postorder(graph['A'])