Решение
class Solution {
fun minDepth(root: TreeNode?): Int {
if (root == null) return 0
var cap = 1024
var q = arrayOfNulls<TreeNode>(cap)
var head = 0
var tail = 0
var size = 0
fun en(x: TreeNode) {
if (size == cap) {
val nq = arrayOfNulls<TreeNode>(cap shl 1)
var i = 0
while (i < size) {
nq[i] = q[(head + i) and (cap - 1)]
i++
}
q = nq
cap = cap shl 1
head = 0
tail = size
}
q[tail] = x
tail = (tail + 1) and (cap - 1)
size++
}
fun de(): TreeNode {
val x = q[head]!!
q[head] = null
head = (head + 1) and (cap - 1)
size--
return x
}
en(root)
var depth = 1
while (size > 0) {
var level = size
while (level > 0) {
val node = de()
val l = node.left
val r = node.right
if (l == null && r == null) return depth
if (l != null) en(l)
if (r != null) en(r)
level--
}
depth++
}
return depth
}
}