Решение
/**
* 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 getMinimumDifference(root: TreeNode?): Int {
var minDiff = Int.MAX_VALUE
var prev: TreeNode? = null
// Вспомогательная функция для обхода дерева in-order (симметричный обход)
fun inorder(node: TreeNode?) {
if (node == null) return
// Обходим левое поддерево
inorder(node.left)
// Вычисляем разницу с предыдущим узлом
if (prev != null) {
minDiff = minOf(minDiff, node.`val` - prev!!.`val`)
}
// Обновляем предыдущий узел
prev = node
// Обходим правое поддерево
inorder(node.right)
}
// Запускаем обход дерева
inorder(root)
return minDiff
}