Skip to content

Commit 6d1fe24

Browse files
committed
Add 0230-kth-smallest-element-in-a-bst.scala
1 parent 2d0e0cc commit 6d1fe24

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* class TreeNode(_value: Int = 0, _left: TreeNode = null, _right: TreeNode = null) {
4+
* var value: Int = _value
5+
* var left: TreeNode = _left
6+
* var right: TreeNode = _right
7+
* }
8+
*/
9+
object Solution {
10+
def kthSmallest(root: TreeNode, k: Int): Int = {
11+
helper(root, k)._2
12+
}
13+
14+
// Recursive in-order traversal.
15+
def helper(root: TreeNode, k: Int): (Boolean, Int, Int) = {
16+
if (root == null) {
17+
return (false, 0, 0)
18+
}
19+
20+
val (isInLeft, lVal, lSize) = helper(root.left, k)
21+
if (isInLeft) {
22+
return (true, lVal, 0)
23+
} else {
24+
if (k - lSize == 1) {
25+
return (true, root.value, 0)
26+
} else {
27+
val (isInRight, rVal, rSize) = helper(root.right, k - (lSize + 1))
28+
if (isInRight) {
29+
return (true, rVal, 0)
30+
} else {
31+
return (false, 0, lSize + rSize + 1)
32+
}
33+
}
34+
}
35+
}
36+
}

0 commit comments

Comments
 (0)