File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed
kth-smallest-element-in-a-bst Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change
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
+ * Binary Search Tree ํน์ฑ์ ๊ณ ๋ คํ์ฌ k๋ฒ์งธ ์์ ์ซ์๋ฅผ ์ฐพ๊ธฐ
16
+ * ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋
17
+ * - ์๊ฐ ๋ณต์ก๋: O(n)
18
+ * - ๊ณต๊ฐ ๋ณต์ก๋: O(n)
19
+ */
20
+ function kthSmallest ( root : TreeNode | null , k : number ) : number {
21
+ let count = 0 ;
22
+ let result = 0 ;
23
+
24
+ /*
25
+ BST์ ํน์ฑ
26
+ - ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ๋
ธ๋ ๊ฐ < ํ์ฌ ๋
ธ๋ ๊ฐ
27
+ - ํ์ฌ ๋
ธ๋๊ฐ < ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ๋
ธ๋ ๊ฐ
28
+ => ์ค์ ์ํ์ ์ค๋ฆ์ฐจ ์ ๋ฐฉ๋ฌธ
29
+ */
30
+
31
+ // ์ค์ ์ํ ํจ์
32
+ function inorder ( node : TreeNode | null ) : void {
33
+ if ( node === null ) return ;
34
+ inorder ( node . left ) ;
35
+
36
+ count ++ ;
37
+ if ( count === k ) {
38
+ result = node . val ;
39
+ return ;
40
+ }
41
+
42
+ inorder ( node . right ) ;
43
+ }
44
+
45
+ inorder ( root ) ;
46
+ return result ;
47
+ }
You canโt perform that action at this time.
0 commit comments