Решение
/**
* Example:
* var ti = TreeNode(5)
* var v = ti.`val`
* Definition for a binary tree node.
* class TreeNode(var `val`: Int) {
* var left: TreeNode? = null
* var right: TreeNode? = null
* }
*/
fun findSecondMinimumValue(root: TreeNode?): Int {
if (root == null) return -1
var secondMin = Long.MAX_VALUE
val minVal = root.`val`
fun dfs(node: TreeNode?) {
if (node == null) return
if (node.`val` > minVal && node.`val` < secondMin) {
secondMin = node.`val`.toLong() // Обновляем второе минимальное значение
} else if (node.`val` == minVal) {
dfs(node.left)
dfs(node.right)
}
}
dfs(root)
return if (secondMin == Long.MAX_VALUE) -1 else secondMin.toInt()
}