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