File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed
kth-smallest-element-in-a-bst Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change
1
+ import java .util .ArrayList ;
2
+ import java .util .List ;
3
+
4
+ // Definition for a binary tree node.
5
+ class TreeNode {
6
+ int val ;
7
+ TreeNode left ;
8
+ TreeNode right ;
9
+ TreeNode () {}
10
+ TreeNode (int val ) { this .val = val ; }
11
+ TreeNode (int val , TreeNode left , TreeNode right ) {
12
+ this .val = val ;
13
+ this .left = left ;
14
+ this .right = right ;
15
+ }
16
+ }
17
+ class SolutionKthSmallest {
18
+ public int kthSmallest (TreeNode root , int k ) {
19
+ // ์ด์ง ๊ฒ์ ํธ๋ฆฌ์ ๋ฃจํธ์ ์ ์ k๊ฐ ์ฃผ์ด์ง๋ฉด ํธ๋ฆฌ์ ์๋ ๋ชจ๋ ๋
ธ๋ ๊ฐ ์ค k๋ฒ์งธ๋ก ์์ ๊ฐ(1-์ธ๋ฑ์ค)์ ๋ฐํํฉ๋๋ค.
20
+ // ์ด์ง ๊ฒ์ ํธ๋ฆฌ์ ํน์ฑ์ ์ด์ฉํด ์ค์ ์ํ๋ฅผ ํ๋ฉด ๋
ธ๋ ๊ฐ์ด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ค.
21
+ // ์ ๋ ฌ ํ k๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ค.
22
+ // ์๊ฐ๋ณต์ก๋: O(N), ๊ณต๊ฐ๋ณต์ก๋: O(N)
23
+ List <Integer > list = new ArrayList <>();
24
+ inorder (root , list );
25
+ return list .get (k - 1 );
26
+ }
27
+
28
+ private void inorder (TreeNode root , List <Integer > list ) {
29
+ if (root == null ) {
30
+ return ;
31
+ }
32
+ inorder (root .left , list );
33
+ list .add (root .val );
34
+ inorder (root .right , list );
35
+ }
36
+ }
You canโt perform that action at this time.
0 commit comments