Skip to content

Commit 628f578

Browse files
committed
add: solve DaleStudy#252 Kth Smallest Element in a BST with ts
1 parent 5d87d39 commit 628f578

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* class TreeNode {
4+
* val: number
5+
* left: TreeNode | null
6+
* right: TreeNode | null
7+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8+
* this.val = (val===undefined ? 0 : val)
9+
* this.left = (left===undefined ? null : left)
10+
* this.right = (right===undefined ? null : right)
11+
* }
12+
* }
13+
*/
14+
15+
/**
16+
* ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(BST)์—์„œ k๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’์„ ์ฐพ๋Š” ํ•จ์ˆ˜
17+
* @param {TreeNode | null} root - ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ ๋…ธ๋“œ
18+
* @param {number} k - ์ฐพ๊ณ ์ž ํ•˜๋Š” k๋ฒˆ์งธ ๊ฐ’
19+
* @returns {number} - k๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’
20+
*
21+
* ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
22+
* - ์ตœ์•…์˜ ๊ฒฝ์šฐ ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰
23+
*
24+
* ๊ณต๊ฐ„๋ณต์žก๋„ : O(n)
25+
* - dfs ํƒ์ƒ‰์„ ํ•˜๋ฉฐ ์ตœ๋Œ€ O(n) ๊ณต๊ฐ„์ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ.
26+
*/
27+
function kthSmallest(root: TreeNode | null, k: number): number {
28+
// dfs ํƒ์ƒ‰์„ ํ†ตํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ tree ๊ฐ’๋“ค์ด ์ €์žฅ๋  ๋ฐฐ์—ด
29+
const values: number[] = [];
30+
31+
// dfs ํƒ์ƒ‰ ํ•˜๋ฉด tree ๊ฐ’ ์ถ”๊ฐ€
32+
const dfs = (tree: TreeNode | null): void => {
33+
if (!tree) return;
34+
35+
// ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ํƒ์ƒ‰
36+
dfs(tree.left);
37+
// ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’ ์ €์žฅ
38+
values.push(tree.val);
39+
// ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ํƒ์ƒ‰
40+
dfs(tree.right);
41+
};
42+
43+
// ํƒ์ƒ‰ํ•˜๋ฉฐ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
44+
dfs(root);
45+
46+
// ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ k-1 ๋ฒˆ์งธ ๊ฐ’ ๋ฐ˜ํ™˜
47+
return values[k - 1];
48+
}
49+

0 commit comments

Comments
ย (0)