Skip to content

Commit e3c373f

Browse files
Jeehay28Jeehay28
authored andcommitted
Add validate-binary-search-tree solution in TypeScript
1 parent 08c9ee3 commit e3c373f

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// Approach 2
2+
// ๐Ÿ—“๏ธ 2025-04-11
3+
// โณ Time Complexity: O(n)
4+
// ๐Ÿ’พ Space Complexity: O(h) โ†’ O(log n) for balanced, O(n) for skewed trees
5+
6+
class TreeNode {
7+
val: number;
8+
left: TreeNode | null;
9+
right: TreeNode | null;
10+
11+
constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
12+
this.val = val === undefined ? 0 : val;
13+
this.left = left === undefined ? null : left;
14+
this.right = right === undefined ? null : right;
15+
}
16+
}
17+
18+
function isValidBST(root: TreeNode | null): boolean {
19+
// ๐ŸŸก ์ค‘์œ„ ์ˆœํšŒ (Inorder Traversal)
20+
// ๋ฐฉ๋ฌธ ์ˆœ์„œ: ์™ผ์ชฝ ์ž์‹ โ†’ ํ˜„์žฌ ๋…ธ๋“œ โ†’ ์˜ค๋ฅธ์ชฝ ์ž์‹
21+
22+
let maxVal = -Infinity;
23+
24+
const dfs = (node: TreeNode | null) => {
25+
if (!node) return true;
26+
27+
if (!dfs(node.left)) return false;
28+
29+
if (node.val <= maxVal) return false;
30+
31+
maxVal = node.val;
32+
33+
if (!dfs(node.right)) return false;
34+
35+
return true;
36+
};
37+
38+
return dfs(root);
39+
}
40+
41+
// Approach 1
42+
// ๐Ÿ—“๏ธ 2025-04-11
43+
// โณ Time Complexity: O(n)
44+
// ๐Ÿ’พ Space Complexity: O(h) โ†’ O(log n) for balanced, O(n) for skewed trees
45+
46+
// function isValidBST(root: TreeNode | null): boolean {
47+
// // ์ขŒ์ธก ์„œ๋ธŒ ํŠธ๋ฆฌ๋กœ ๋‚ด๋ ค๊ฐˆ ๋•Œ:
48+
// // ํ•˜ํ•œ๊ฐ’: ๋ถ€๋ชจ ๋…ธ๋“œ ํ•˜ํ•œ๊ฐ’
49+
// // ์ƒํ•œ๊ฐ’: ๋ถ€๋ชจ ๋…ธ๋“œ ๊ฐ’
50+
// // ์šฐ์ธก ์„œ๋ธŒ ํŠธ๋ฆฌ๋กœ ๋‚ด๋ ค๊ฐˆ ๋•Œ:
51+
// // ์šฐ์ธก ํ•˜ํ•œ๊ฐ’: ๋ถ€๋ชจ ๋…ธ๋“œ ๊ฐ’
52+
// // ์šฐ์ธก ์ƒํ•œ๊ฐ’: ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ์ƒํ•œ ๊ฐ’
53+
// // ๐ŸŸข ์ „์œ„ ์ˆœํšŒ (Preorder Traversal)
54+
// // ๋ฐฉ๋ฌธ ์ˆœ์„œ: ํ˜„์žฌ ๋…ธ๋“œ โ†’ ์™ผ์ชฝ ์ž์‹ โ†’ ์˜ค๋ฅธ์ชฝ ์ž์‹
55+
56+
// const dfs = (node: TreeNode | null, low: number, high: number) => {
57+
// if (!node) return true;
58+
59+
// if (!(node.val > low && node.val < high)) return false;
60+
61+
// return dfs(node.left, low, node.val) && dfs(node.right, node.val, high);
62+
// };
63+
64+
// return dfs(root, -Infinity, Infinity);
65+
// }

0 commit comments

Comments
ย (0)