Skip to content

Commit 4c37aa7

Browse files
committed
feat(soobing): week13 > kth-smallest-element-in-a-bst
1 parent 84105a9 commit 4c37aa7

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* ๋ฌธ์ œ ์„ค๋ช…
3+
* - ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(BST)๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, k๋ฒˆ์งธ ์ž‘์€ ์š”์†Œ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ
4+
*
5+
* ์•„์ด๋””์–ด
6+
* 1) ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ํ•˜๋ฉด์„œ k๋ฒˆ์งธ ์ž‘์€ ์š”์†Œ๋ฅผ ์ฐพ๋Š”๋‹ค.
7+
* - ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(BST)๋Š” ์ค‘์œ„ ์ˆœํšŒ(in-order traversal)ํ•˜๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
8+
*/
9+
10+
class TreeNode {
11+
val: number;
12+
left: TreeNode | null;
13+
right: TreeNode | null;
14+
constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
15+
this.val = val === undefined ? 0 : val;
16+
this.left = left === undefined ? null : left;
17+
this.right = right === undefined ? null : right;
18+
}
19+
}
20+
21+
function kthSmallest(root: TreeNode | null, k: number): number {
22+
let result = -1;
23+
let count = 0;
24+
25+
function inOrder(node: TreeNode | null) {
26+
if (!node || result !== -1) return;
27+
28+
inOrder(node.left);
29+
count++;
30+
31+
if (count === k) {
32+
result = node.val;
33+
return;
34+
}
35+
36+
inOrder(node.right);
37+
}
38+
39+
inOrder(root);
40+
return result;
41+
}

0 commit comments

Comments
ย (0)