코드
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')
결과
풀이 방법
- 대표적인
트리 순회
알고리즘인 전위(preorder) 순회, 중위(inorder) 순회, 후위(postorder) 순회를 구현하는 문제이다. 재귀를 사용한다
- 트리의 각 노드와 자식노드를 표현하기 위해 노드를 key로, (leftchild, rightchild) 맵을 value로 갖는
딕셔너리
를 활용하였다.