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