JH 개발 블로그
백준 파이썬 1991 트리 순회 본문
https://www.acmicpc.net/problem/1991
코드
import sys
input = sys.stdin.readline
N = int(input())
tree = {}
for _ in range(N):
root, left, right = input().split()
tree[root] = [left,right]
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='')
preorder('A')
print()
inorder('A')
print()
postorder('A')
preorder(전위순회) = (루트)(왼쪽자식)(오른쪽자식)
inorder(중위순회) = (왼쪽자식)(루트)(오른쪽자식)
postorder(후위순회) = (왼쪽자식)(오른쪽자식)(루트)
루트를 출력할때 순서만 다릅니다.
예를들어 전위순회에서는 맨 위에 있는 루트를 출력하고, 왼쪽자식으로 간 후
왼쪽자식에서도 다시 (루트)(왼쪽자식)(오른쪽자식) 순으로 재귀적으로 출력해나갑니다.
'코딩테스트 > 백준' 카테고리의 다른 글
백준 1201 파이썬 NMK (0) | 2021.12.31 |
---|---|
백준 파이썬 1074 Z (0) | 2021.12.31 |
백준 파이썬 2263 트리의 순회 (0) | 2021.12.30 |
백준 파이썬 11729 하노이 탑 이동 순서 (0) | 2021.12.29 |
백준 파이썬 1780 종이의 개수 (0) | 2021.12.29 |
Comments