몽상실현개발주의

[BOJ] 1991 / 트리 순회 / Python 파이썬 본문

Algorithm PS/BOJ

[BOJ] 1991 / 트리 순회 / Python 파이썬

migrationArc 2021. 6. 14. 21:19

[BOJ] 1991 / 트리 순회 / Python 파이썬

[BOJ] 1991 / 트리 순회 / Python 파이썬

https://www.acmicpc.net/problem/1991

 

1991번: 트리 순회

첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자

www.acmicpc.net

 

풀이

트리 순회의 기본 문제이다.

 

  • 전위 순회(pre-order): Root -> Left -> Right
  • 중위 순회(in-order): Left -> Root -> Right
  • 후위 순회(post-order): Left -> Right -> Root

 

N = int(input())
tree = {}

for _ in range(N):
    node, left, right = input().split()
    tree[node] = [left, right]


def preOrder(node):
    if node == '.':
        return

    print(node, end="")
    preOrder(tree[node][0])
    preOrder(tree[node][1])


def inOrder(node):
    if node == '.':
        return

    inOrder(tree[node][0])
    print(node, end="")
    inOrder(tree[node][1])


def postOrder(node):
    if node == '.':
        return

    postOrder(tree[node][0])
    postOrder(tree[node][1])
    print(node, end="")


preOrder('A')
print()
inOrder('A')
print()
postOrder('A')
Comments