1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import utils.TreeNode;
import java.util.Arrays;
public class ConstructBinaryTreefromPreorderandInorderTraversal { public TreeNode buildTree(int[] preorder, int[] inorder) { return helper(preorder, inorder, 0, preorder.length, 0, inorder.length); } public TreeNode helper(int[] preorder, int[] inorder, int prel, int prer, int inl ,int inr) { if (inl == inr) return new TreeNode(inorder[inl]); TreeNode root = new TreeNode(preorder[prel]); int i = inl; for (i = inl; i<inr; i++) { if (inorder[i] == root.val) { break; } } root.left = helper(preorder, inorder, prel+1,prel+(i-inl), inl, i-1); root.right = helper(preorder, inorder, prel+(i-inl)+1, prer, i+1, inr); return root; } }
|