Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: tree traversal, DFS, BFS, recursion, queue, stack

Как реализовать обход дерева (глубину/ширину)?

Проверяет понимание алгоритмов обхода древовидных структур данных, что необходимо для работы с DOM, компонентами и графами.

Короткий ответ

Обход дерева бывает двух типов: в глубину (DFS) и в ширину (BFS). DFS идёт вглубь по каждой ветви до конца, используя стек (или рекурсию). BFS обходит уровень за уровнем, используя очередь. DFS подходит для поиска в глубину и проверки связности, BFS — для поиска кратчайшего пути в невзвешенном графе.

Длинный ответ

Что такое обход дерева?

Обход дерева — это процесс посещения каждого узла ровно один раз. Существует два основных подхода: обход в глубину (DFS) и обход в ширину (BFS). Выбор зависит от задачи: например, для поиска элемента в глубокой иерархии удобен DFS, а для нахождения кратчайшего пути — BFS.

Обход в глубину (DFS)

DFS рекурсивно или с помощью стека идёт вглубь по каждой ветви. Для бинарного дерева есть три порядка: прямой (pre-order), симметричный (in-order) и обратный (post-order). Пример на JavaScript:

class TreeNode {
  constructor(value) {
    this.value = value;
    this.left = null;
    this.right = null;
  }
}

function dfsPreOrder(node) {
  if (!node) return;
  console.log(node.value);
  dfsPreOrder(node.left);
  dfsPreOrder(node.right);
}

Обход в ширину (BFS)

BFS использует очередь и обходит дерево по уровням. Это полезно для поиска кратчайшего пути или для работы с графами. Пример:

function bfs(root) {
  const queue = [root];
  while (queue.length) {
    const node = queue.shift();
    console.log(node.value);
    if (node.left) queue.push(node.left);
    if (node.right) queue.push(node.right);
  }
}

Где применяется?

  • DFS — в парсерах, сериализации, поиске в графах.
  • BFS — в алгоритмах поиска кратчайшего пути, веб-сканерах, анализе социальных сетей.

Вывод: DFS проще реализовать рекурсивно и он требует меньше памяти, если дерево глубокое. BFS гарантирует нахождение кратчайшего пути в невзвешенном графе, но использует больше памяти на широких деревьях.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • Math

    Math

Ключевые слова

#tree traversal

#DFS

#BFS

#recursion

#queue

#stack

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию