Construct Binary Tree from Preorder and Inorder Traversal LeetCode solution in Java
1class Solution {2Map<Integer, Integer> inMap;3int curIndex = 0;4int[] preOrder;56public TreeNode buildTree(int[] preorder, int[] inorder) {7preOrder = preorder;8inMap = new HashMap<>();9for (int i = 0; i < inorder.length; i++) {10inMap.put(inorder[i], i);11}12return dfs(0, preorder.length - 1);13}1415public TreeNode dfs(int s, int e) {16if (s > e) return null;17int curNode = preOrder[curIndex++];18TreeNode root = new TreeNode(curNode);19int inRoot = inMap.get(curNode);20root.left = dfs(s, inRoot - 1);21root.right = dfs(inRoot + 1, e);22return root;23}24}