-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproblem_9_1.py
More file actions
27 lines (24 loc) · 884 Bytes
/
Copy pathproblem_9_1.py
File metadata and controls
27 lines (24 loc) · 884 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def traversal(preorder, inorder):
assert(len(preorder) == len(inorder))
if preorder:
root = preorder[0]
pos = inorder.index(root)
traversal(preorder[1:pos + 1], inorder[:pos])
traversal(preorder[pos+1:], inorder[pos+1:])
print(root, end = " ")
def inorder(preorder, postorder):
assert(len(preorder) == len(postorder) and preorder[0] == postorder[-1])
root = preorder[0]
if len(preorder) == 1:
print(root, end = " ")
elif preorder:
pos = postorder.index(preorder[1]) + 1
inorder(preorder[1:pos + 1], postorder[:pos])
print(root, end = " ")
inorder(preorder[pos+1:], postorder[pos: -1])
for _ in range(int(input())):
n = int(input())
preorder = list(map(int, input().split()))
inorder = list(map(int, input().split()))
traversal(preorder, inorder)
print()