Решение
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
class Node(val value: Int) {
var left: Node? = null
var right: Node? = null
}
class BST {
var root: Node? = null
fun insert(value: Int): Int {
if (root == null) {
root = Node(value)
return 1
}
return insertRec(root, value, 1)
}
private fun insertRec(node: Node?, value: Int, depth: Int): Int {
if (node == null) return depth
return when {
value < node.value -> {
if (node.left == null) {
node.left = Node(value)
depth + 1
} else {
insertRec(node.left, value, depth + 1)
}
}
value > node.value -> {
if (node.right == null) {
node.right = Node(value)
depth + 1
} else {
insertRec(node.right, value, depth + 1)
}
}
else -> -1
}
}
}
fun main() {
val reader = BufferedReader(InputStreamReader(System.`in`))
val writer = BufferedWriter(OutputStreamWriter(System.out))
val bst = BST()
val parts = reader.readLine().split(" ").map { it.toInt() }
val depths = mutableListOf<Int>()
for (num in parts) {
if (num == 0) break
val depth = bst.insert(num)
if (depth != -1) depths.add(depth)
}
writer.write(depths.joinToString(" ") + "\\n")
reader.close()
writer.flush()
writer.close()
}