File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
kth-smallest-element-in-a-bst Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You canโt perform that action at this time.
0 commit comments