1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| private HashMap<Integer, Integer> hp = new HashMap<>();
public TreeNode buildTree(int[] preorder, int[] inorder) { for (int i = 0; i < inorder.length; i++) { hp.put(inorder[i], i); } return buildMyTree(preorder, inorder, 0, preorder.length - 1, 0, inorder.length - 1); }
private TreeNode buildMyTree(int[] preorder, int[] inorder,int preLeft, int preRight, int inLeft, int inRight) { if (preLeft > preRight) return null; if (preLeft == preRight) return new TreeNode(preorder[preLeft]); TreeNode root = new TreeNode(preorder[preLeft]); int index = hp.get(root.val); int len = index - inLeft; root.left = buildMyTree(preorder, inorder, preLeft + 1, preLeft + len , inLeft, index - 1); root.right = buildMyTree(preorder, inorder, preLeft + len + 1, preRight, index + 1, inRight); return root; }
|