File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed
construct-binary-tree-from-preorder-and-inorder-traversal Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change
1
+ // TC: O(N) - leetcode analyze 기준
2
+ // SC: O(N)
3
+
4
+ /**
5
+ * Definition for a binary tree node.
6
+ * function TreeNode(val, left, right) {
7
+ * this.val = (val===undefined ? 0 : val)
8
+ * this.left = (left===undefined ? null : left)
9
+ * this.right = (right===undefined ? null : right)
10
+ * }
11
+ */
12
+ /**
13
+ * @param {number[] } preorder
14
+ * @param {number[] } inorder
15
+ * @return {TreeNode }
16
+ */
17
+ var buildTree = function ( preorder , inorder ) {
18
+ if ( inorder . length === 0 ) {
19
+ return null ;
20
+ }
21
+
22
+ if ( inorder . length === 1 ) {
23
+ return new TreeNode ( inorder [ 0 ] ) ;
24
+ }
25
+
26
+ const rootValue = preorder [ 0 ] ;
27
+ const leftNodeLength = inorder . findIndex ( ( value ) => value === rootValue ) ;
28
+ const leftNode = buildTree (
29
+ preorder . slice ( 1 , 1 + leftNodeLength ) ,
30
+ inorder . slice ( 0 , leftNodeLength )
31
+ ) ;
32
+ const rightNode = buildTree (
33
+ preorder . slice ( 1 + leftNodeLength ) ,
34
+ inorder . slice ( leftNodeLength + 1 )
35
+ ) ;
36
+ return new TreeNode ( rootValue , leftNode , rightNode ) ;
37
+ } ;
You can’t perform that action at this time.
0 commit comments