import java.util.*; /** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { int[] pre; HashMap<Integer, Integer> map = new HashMap<>(); public TreeNode reConstructBinaryTree(int [] pre,int [] vin) { this.pre = pre; for(int i = 0;i < vin.length;i++){ map.put(vin[i],i); } return rec(0,0,vin.length-1); } public TreeNode rec(int root,int left, int right){ if (left > right){ return null; } TreeNode node = new TreeNode(pre[root]); int i = map.get(pre[root]); node.left = rec(root+1, left, i-1); node.right = rec(root+i-left+1,i+1, right); return node; } }