Skip to content

Commit 8f4e343

Browse files
committed
4. construct-binary-tree-from-preorder-and-inorder-traversal
1 parent 31b7ee6 commit 8f4e343

File tree

1 file changed

+32
-0
lines changed
  • construct-binary-tree-from-preorder-and-inorder-traversal

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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)

0 commit comments

Comments
ย (0)