Сложность: medium
Дан корень двоичного дерева, верните массив наибольших значений в каждой строке дерева (индексация с 0).
Пример:
Input: root = [1,3,2,5,3,null,9]
Output: [1,3,9]
👨💻 Алгоритм:
1⃣Если корень дерева равен null (пустое дерево), верните пустой список. Инициализируйте список ans для хранения результатов и очередь с корнем дерева для выполнения поиска в ширину (BFS).
2⃣Выполните BFS, пока очередь не пуста: инициализируйте currMax минимальным значением и сохраните длину очереди в currentLength. Повторите currentLength раз: удалите узел из очереди, обновите currMax, если значение узла больше. Для каждого дочернего узла, если он не равен null, добавьте его в очередь.
3⃣Добавьте currMax в ans. Верните ans.
😎 Решение:
var largestValues = function(root) {
if (!root) return [];
const ans = [];
const queue = [root];
while (queue.length > 0) {
const currentLength = queue.length;
let currMax = -Infinity;
for (let i = 0; i < currentLength; i++) {
const node = queue.shift();
currMax = Math.max(currMax, node.val);
if (node.left) queue.push(node.left);
if (node.right) queue.push(node.right);
}
ans.push(currMax);
}
return ans;
};Ставь 👍 и забирай 📚 Базу знаний
