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