[BOJ] 트리 순회

Minsu Han·2022년 9월 28일
0

알고리즘연습

목록 보기
24/105

코드

import sys
input = sys.stdin.readline

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='')


N = int(input())
tree = {}
for _ in range(N):
    node, lc, rc = input().split()
    tree[node] = (lc, rc)

preorder('A')
print()
inorder('A')
print()
postorder('A')
    

결과

image


풀이 방법

  • 대표적인 트리 순회 알고리즘인 전위(preorder) 순회, 중위(inorder) 순회, 후위(postorder) 순회를 구현하는 문제이다. 재귀를 사용한다
  • 트리의 각 노드와 자식노드를 표현하기 위해 노드를 key로, (leftchild, rightchild) 맵을 value로 갖는 딕셔너리를 활용하였다.

profile
기록하기

0개의 댓글