105. Construct Binary Tree from Preorder and Inorder Traversal
Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
---
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { if(preorder.length == 0 || preorder.length != inorder.length) return null; return helper(preorder, 0, preorder.length - 1, inorder, 0, inorder.length - 1); } public TreeNode helper(int[] pre, int start1, int end1, int[] in, int start2, int end2){ if(start1 > end1 || start2 > end2) return null; int val = pre[start1]; TreeNode cur = new TreeNode(val); int k = start2; while(k <= end2){ if(in[k] == val) break; k++; } cur.left = helper(pre, start1 + 1, start1 + k - start2, in, start2, k - 1); cur.right = helper(pre, start1 + k - start2 + 1, end1, in, k + 1, end2); return cur; } }
浙公网安备 33010602011771号