728x90
반응형

기본적인 트리 문제이다.

  • 전위 순회한 결과 : (왼쪽 자식) -> (오른쪽 자식)
  • 중위 순회한 결과 : (왼쪽 자식) -> (루트) -> (오른쪽 자식)
  • 후위 순회한 결과 : (왼쪽 자식) -> (오른쪽 자식) -> (루트)
def preorder(node):
    print(node, end='')
    left, right = tree[node][0], tree[node][1]
    if left != '.':
        preorder(left)
    if right != '.':
        preorder(right)

def inorder(node):
    left, right = tree[node][0], tree[node][1]
    if left != '.':
        inorder(left)
    print(node, end='')
    if right != '.':
        inorder(right)
        
def postorder(node):
    left, right = tree[node][0], tree[node][1]
    if left != '.':
        postorder(left)
    if right != '.':
        postorder(right)
    print(node, end='')
                        
N = int(input())
tree = {}
for i in range(1, N+1):
    node, left, right = input().split()
    tree[node] = [left, right]
preorder('A'); print()
inorder('A'); print()
postorder('A'); print()
728x90
반응형

+ Recent posts