Примечания LeetCode [56]: решение BFS Kotlin
Проблема
Интуиция
Примените BFS для выполнения обхода порядка уровней от корня и обратного порядка.
Код
class Solution { fun levelOrderBottom(root: TreeNode?): List<List<Int>> { val result = mutableListOf<List<Int>>() root?.let { val queue: Queue<TreeNode> = LinkedList() queue.offer(it) while (queue.isNotEmpty()) { val level = mutableListOf<Int>() for (i in queue.indices) { val node = queue.poll() level.add(node.`val`) node.left?.let { queue.offer(it) } node.right?.let { queue.offer(it) } } result.add(0, level) } } return result } }
Анализ сложности
- Временная сложность: O(n)
- Сложность пространства: O(n)