kt: add «1028. Recover a Tree From Preorder Traversal»

URL:	https://leetcode.com/problems/recover-a-tree-from-preorder-traversal/
Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2025-02-23 20:42:11 +01:00
parent 359ff970a5
commit 2c0920d14e
Signed by: mfocko
SSH key fingerprint: SHA256:icm0fIOSJUpy5+1x23sfr+hLtF9UhY8VpMC7H4WFJP8

View file

@ -0,0 +1,37 @@
class Solution {
fun recoverFromPreorder(traversal: String): TreeNode? {
val levels = mutableListOf<TreeNode>()
var index = 0
while (index < traversal.length) {
var depth = 0
while (index < traversal.length && traversal[index] == '-') {
++depth
++index
}
var value = 0
while (index < traversal.length && traversal[index].isDigit()) {
value = 10 * value + (traversal[index] - '0')
++index
}
val node = TreeNode(value)
if (depth < levels.size) {
levels[depth] = node
} else {
levels.add(node)
}
if (depth > 0) {
val parent = levels[depth - 1]
when {
parent.left == null -> parent.left = node
else -> parent.right = node
}
}
}
return levels[0]
}
}