문제.
풀이.
트리의 순회만 안다면 매우 쉽게 풀 수 있다.
전위 순회 = 루트, 왼쪽 , 오른쪽
중위 순회 = 왼쪽, 루트, 오른쪽
후위 순회 = 왼쪽, 오른쪽, 루트
이다.
딕셔너리를 이용하여 풀었다.
import sys
# 전위순회
def preorder(root):
if root !='.':
print(root, end='')
preorder(tree[root][0])
preorder(tree[root][1])
# 중위순회
def inorder(root):
if root !='.':
inorder(tree[root][0])
print(root, end='')
inorder(tree[root][1])
# 후위순회
def postorder(root):
if root !='.':
postorder(tree[root][0])
postorder(tree[root][1])
print(root, end='')
input = sys.stdin.readline
n = int(input())
tree = {}
for i in range(n):
root, left, rigth = map(str, input().split())
tree[root] = [left, rigth]
preorder('A')
print()
inorder('A')
print()
postorder('A')
'프로그래밍 > 백준' 카테고리의 다른 글
백준 5639 이진 검색 트리 - 파이썬 (0) | 2021.08.03 |
---|---|
백준 2263 트리의 순회 - 파이썬 (0) | 2021.08.03 |
백준 1167 트리의 지름 - 파이썬 (0) | 2021.08.02 |
백준 11780 플로이드 2 - 파이썬 (0) | 2021.08.02 |
백준 11779 최소비용 구하기 2 - 파이썬 (0) | 2021.08.02 |