File tree Expand file tree Collapse file tree 1 file changed +32
-0
lines changed
construct-binary-tree-from-preorder-and-inorder-traversal Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Original file line number Diff line number Diff line change
1
+ class TreeNode {
2
+ val : number ;
3
+ left : TreeNode | null ;
4
+ right : TreeNode | null ;
5
+ constructor ( val ?: number , left ?: TreeNode | null , right ?: TreeNode | null ) {
6
+ this . val = val === undefined ? 0 : val ;
7
+ this . left = left === undefined ? null : left ;
8
+ this . right = right === undefined ? null : right ;
9
+ }
10
+ }
11
+
12
+ function buildTree ( preorder : number [ ] , inorder : number [ ] ) : TreeNode | null {
13
+ // build ํจ์๊ฐ ๊ฐ ๋
ธ๋๋ง๋ค ํธ์ถ๋จ(N) * ๊ฐ ๋
ธ๋๋ง๋ค shift, indexOf ์ํ(N) = O(N^2)
14
+ function build ( preorder , inorder ) {
15
+ if ( inorder . length ) {
16
+ // TC: O(N)
17
+ const idx = inorder . indexOf ( preorder . shift ( ) ) ;
18
+ const root = new TreeNode ( inorder [ idx ] ) ;
19
+
20
+ root . left = build ( preorder , inorder . slice ( 0 , idx ) ) ;
21
+ root . right = build ( preorder , inorder . slice ( idx + 1 ) ) ;
22
+
23
+ return root ;
24
+ }
25
+ return null ;
26
+ }
27
+
28
+ return build ( preorder , inorder ) ;
29
+ }
30
+
31
+ // TC: O(N^2)
32
+ // SC: O(N^2)
You canโt perform that action at this time.
0 commit comments