给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。
输入格式:
输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。
输出格式:
在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。
输入样例:
7
2 3 1 5 7 6 4
1 2 3 4 5 6 7
输出样例:
4 1 6 3 5 7 2
提交结果:
代码:
def Floor(root, front, tail, index):
if front > tail:
return
m[index] = post[root]
i = front
while i < tail and mid[i] != post[root]:
i += 1
Floor(root - tail + i - 1, front, i - 1, 2 * index + 1)
Floor(root - 1, i + 1, tail, 2 * index + 2)
m = {}
n = int(input())
post = list(map(int, input().split()))
mid = list(map(int, input().split()))
Floor(n - 1, 0, n - 1, 0)
result = sorted(m.items(), key=lambda x: x[0])
for i in result[:-1]:
print(i[1], end=" ")
print(result[-1][1])