1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { if (preorder.length==0 || inorder.length==0 || preorder.length!=inorder.length) return null; TreeNode root = buildTree(preorder, inorder, 0, preorder.length-1, 0, inorder.length-1); return root; }
public TreeNode buildTree(int[] preorder, int[] inorder, int pl, int pr, int il, int ir) { if (pl>pr || il>ir) return null; TreeNode root = new TreeNode(preorder[pl]); int len = 0; while (inorder[il+len]!=preorder[pl]) len++; root.left = buildTree(preorder, inorder, pl+1, pl+len, il, il+len-1); root.right = buildTree(preorder, inorder, pl+1+len, pr, il+len+1, ir); return root; } }
|