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