baekjoon 20260426
This commit is contained in:
parent
47a227393e
commit
b0fd507dff
27
code_study/Baekjoon/python/2263.py
Normal file
27
code_study/Baekjoon/python/2263.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import sys
|
||||||
|
sys.setrecursionlimit(10**6)
|
||||||
|
input = sys.stdin.readline
|
||||||
|
|
||||||
|
N = int(input())
|
||||||
|
inOrder = list(map(int, input().split())) # left - root - right
|
||||||
|
postOrder = list(map(int, input().split())) # left - right - root
|
||||||
|
preOrder = [] # root - left - right
|
||||||
|
|
||||||
|
inOrderIdx = [0] * (N+1)
|
||||||
|
for i in range(N) :
|
||||||
|
inOrderIdx[inOrder[i]] = i
|
||||||
|
|
||||||
|
def find(L_in, R_in, L_post, R_post) :
|
||||||
|
if L_in > R_in or L_post > R_post :
|
||||||
|
return
|
||||||
|
|
||||||
|
root = postOrder[R_post]
|
||||||
|
root_idx = inOrderIdx[root]
|
||||||
|
left_length = root_idx - L_in
|
||||||
|
|
||||||
|
preOrder.append(root)
|
||||||
|
find(L_in, L_in + left_length - 1, L_post, L_post + left_length - 1)
|
||||||
|
find(root_idx + 1, R_in, L_post + left_length, R_post - 1)
|
||||||
|
|
||||||
|
find(0, N-1, 0, N-1)
|
||||||
|
print(*preOrder)
|
||||||
Loading…
x
Reference in New Issue
Block a user