package
0.0.0-20241221191246-b80a13d7bbe0
Repository: https://github.com/yvv4git/go-algorithms.git
Documentation: pkg.go.dev
# README
102. Binary Tree Level Order Traversal
Level - medium
Task
Given the root of a binary tree, return the level order traversal of its nodes' values. (i.e., from left to right, level by level).
Объяснение
Задача заключается в том, чтобы обойти двоичное дерево уровней в порядке слева направо и верхнего внизу. Это означает, что вы должны пройти по каждому уровню дерева слева направо, начиная с корня, затем перейти на следующий уровень и продолжить процесс до самого нижнего уровня.
Для решения этой задачи вам понадобится использовать алгоритм обхода в ширину (BFS), так как он позволяет обойти дерево по уровням. В BFS мы используем очередь для отслеживания узлов, которые нужно посетить. На каждом шаге мы добавляем в очередь всех детей текущего узла, а затем удаляем его из очереди.
Шаги:
- Проверьте, что корень не является нулевым. Если это так, верните пустой список.
- Инициализируйте очередь и добавьте корень в нее.
- Пока очередь не пуста, выполните следующие шаги:
3.1. Получите размер текущей очереди (количество узлов на текущем уровне).
3.2. Для каждого узла на текущем уровне:
3.2.1. Добавьте значение узла в список текущего уровня.
3.2.2. Если у узла есть левый потомок, добавьте его в очередь.
3.2.3. Если у узла есть правый потомок, добавьте его в очередь.
3.3. Добавьте список текущего уровня в результирующий список. - После выхода из цикла верните результирующий список.
Example 1:
Input: root = [3,9,20,null,null,15,7]
Output: [[3],[9,20],[15,7]]
Example 2:
Input: root = [1]
Output: [[1]]
Constraints:
- The number of nodes in the tree is in the range [0, 2000].
- -1000 <= Node.val <= 1000