#P4064. 从前序与中序遍历序列构造二叉树

从前序与中序遍历序列构造二叉树

题目内容

给定两个整数数组 preorderpreorderinorderinorder ,其中 preorderpreorder是二叉树的先序遍历, inorderinorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点

输入描述

  • 输入的第一行包含两个整数 nmn,m ,表示前序遍历数组 preorderpreorder 和中序遍历数组 inorderinorder 的长度。
  • 第二行包含 nn 个整数,表示前序遍历数组 preorderpreorder
  • 第三行包含 mm 个整数,表示中序遍历数组 inorderinorder

输出描述

输出一个数组,表示构造出的二叉树的层序遍历结果。末尾不保留多余null

样例1

img

输入

5 5
3 9 20 15 7
9 3 15 20 7

输出

3 9 20 null null 15 7

样例2

输入

1 1
-1
-1

输出

-1

提示

  • 1<=preorder.length<=30001 <= preorder.length <= 3000
  • inorder.length==preorder.lengthinorder.length == preorder.length
  • 3000<=preorder[i],inorder[i]<=3000-3000 <= preorder[i], inorder[i] <= 3000
  • preorderpreorderinorderinorder均 无重复 元素
  • inorderinorder 均出现在 preorderpreorder
  • preorderpreorder 保证为二叉树的前序遍历序列
  • inorderinorder保证 为二叉树的中序遍历序列