알고리즘
자료구조
[4256] 트리
by Hwang
문제
https://www.acmicpc.net/problem/4256
풀이
전위 순회의 결과로 이진 트리의 탐색 순서를 알 수 있고, 중위 순회의 결과로 노드간의 위치 관계를 알 수 있습니다.
이 두 가지 정보를 이용해서 후위 순회를 진행해줬습니다.
import sys
T = int(sys.stdin.readline())
for _ in range(T):
N = int(sys.stdin.readline())
preorder = list(map(int, sys.stdin.readline().strip().split()))
inorder = list(map(int, sys.stdin.readline().strip().split()))
inorder_index = dict()
for i in range(N):
inorder_index[inorder[i]] = i
index = 0
def postorder(right):
global index
c_index = index
index += 1
if index < N and inorder_index[preorder[c_index]] > inorder_index[preorder[index]]:
postorder(inorder_index[preorder[c_index]])
if index < N and inorder_index[preorder[c_index]] < inorder_index[preorder[index]]:
if right > inorder_index[preorder[index]]:
postorder(right)
print(preorder[c_index], end=' ')
postorder(N)
print()
Comment