Skip to content

Commit f3fb21b

Browse files
Time: 3 ms (29.27%), Space: 45.3 MB (89.18%) - LeetHub
1 parent ac891a1 commit f3fb21b

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode() {}
8+
* TreeNode(int val) { this.val = val; }
9+
* TreeNode(int val, TreeNode left, TreeNode right) {
10+
* this.val = val;
11+
* this.left = left;
12+
* this.right = right;
13+
* }
14+
* }
15+
*/
16+
class Solution {
17+
int preIndex = 0;
18+
19+
public TreeNode buildTree(int[] preorder, int[] inorder) {
20+
return build(preorder, inorder, 0, inorder.length -1);
21+
}
22+
TreeNode build(int[] preorder, int[] inorder, int start, int end){
23+
if(start>end) return null;
24+
25+
int rootval = preorder[preIndex++];
26+
TreeNode root = new TreeNode(rootval);
27+
28+
int inIndex = find(inorder, start, end, rootval);
29+
30+
root.left = build(preorder, inorder, start, inIndex -1);
31+
root.right = build(preorder , inorder, inIndex+1, end);
32+
return root;
33+
}
34+
35+
int find(int[] arr, int s, int e, int key){
36+
for(int i = s; i<=e; i++) {
37+
if(arr[i] == key) return i;
38+
}
39+
return -1;
40+
}
41+
}

0 commit comments

Comments
 (0)