Решение
/**
* 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 findTarget(root: TreeNode?, k: Int): Boolean {
val seen = mutableSetOf<Int>()
fun dfs(node: TreeNode?): Boolean {
if (node == null) return false
if (k - node.`val` in seen) return true // Если разность уже встречалась, возвращаем true
seen.add(node.`val`) // Добавляем текущий элемент в множество
return dfs(node.left) || dfs(node.right) // Проверяем левого и правого потомков
}
return dfs(root)
}