File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed
construct-binary-tree-from-preorder-and-inorder-traversal Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change
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
+
17
+ // time : O(n)
18
+ // space : O(n)
19
+ // n은 트리 노드 수
20
+
21
+ class Solution {
22
+
23
+ private int i = 0 ;
24
+ Map <Integer , Integer > map = new HashMap <>();
25
+
26
+ public TreeNode buildTree (int [] preorder , int [] inorder ) {
27
+
28
+ for (int i = 0 ; i < inorder .length ; i ++) {
29
+ map .put (inorder [i ], i );
30
+ }
31
+
32
+ return build (preorder , inorder , 0 , inorder .length );
33
+
34
+ }
35
+
36
+ private TreeNode build (int [] preorder , int [] inorder , int start , int end ) {
37
+ if (i >= preorder .length || start >= end ) {
38
+ return null ;
39
+ }
40
+
41
+ int value = preorder [i ++];
42
+ int index = map .get (value );
43
+
44
+ TreeNode leftTreeNode = build (preorder , inorder , start , index );
45
+ TreeNode rightTreeNode = build (preorder , inorder , index +1 , end );
46
+
47
+ return new TreeNode (value , leftTreeNode , rightTreeNode );
48
+ }
49
+
50
+ }
You can’t perform that action at this time.
0 commit comments