728x90
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
분석
트리 순회(전위 순회, 중위 순회, 후위 순회), DFS
1. 전위순회 뿌리(root)를 먼저 방문 #전위순회 출력 : 1 2 4 5 3 6 7 def preorder(v): if v > 7: return else: print(v, end=' ') preorder(v * 2) preorder(v * 2 + 1) preorder(1) 2. 중위 순회 왼쪽 하위 트리를 방문 후 뿌리(root)를
karla.tistory.com
풀이
import sys
input=sys.stdin.readline
N = int(input())
tree = {}
for n in range(N):
root, left, right = input().split()
tree[root] = [left, right]
def preorder(r):
if r != '.':
print(r, end='') # root
preorder(tree[r][0]) # left
preorder(tree[r][1]) # right
def inorder(r):
if r != '.':
inorder(tree[r][0]) # left
print(r, end='') # root
inorder(tree[r][1]) # right
def postorder(r):
if r != '.':
postorder(tree[r][0]) # left
postorder(tree[r][1]) # right
print(r, end='') # root
preorder('A')
print()
inorder('A')
print()
postorder('A')
728x90