File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed
construct-binary-tree-from-preorder-and-inorder-traversal Expand file tree Collapse file tree 1 file changed +36
-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+ /**
13+ * TC: O(n^2)
14+ * SC: O(n)
15+ * */
16+ function buildTree ( preorder : number [ ] , inorder : number [ ] ) : TreeNode | null {
17+ if ( ! preorder ?. length || ! inorder ?. length ) {
18+ return null ;
19+ }
20+
21+ const rootValue = preorder [ 0 ] ;
22+ const root = new TreeNode ( rootValue ) ;
23+ const inorderRootIndex = inorder . indexOf ( rootValue ) ;
24+
25+ root . left = buildTree (
26+ preorder . slice ( 1 , inorderRootIndex + 1 ) ,
27+ inorder . slice ( 0 , inorderRootIndex ) ,
28+ ) ;
29+
30+ root . right = buildTree (
31+ preorder . slice ( inorderRootIndex + 1 ) ,
32+ inorder . slice ( inorderRootIndex + 1 ) ,
33+ ) ;
34+
35+ return root ;
36+ }
You can’t perform that action at this time.
0 commit comments