Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: tree traversal, depth-first search, breadth-first search, recursion, binary tree

Как реализовать поиск по дереву данных?

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

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

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

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

Основные подходы к поиску по дереву

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

Пример реализации на JavaScript

// Дерево: { value: 1, children: [ { value: 2, children: [] }, { value: 3, children: [ { value: 4, children: [] } ] } ] }

// DFS (рекурсивно)
function dfs(node, target) {
  if (node.value === target) return node;
  for (let child of node.children) {
    const result = dfs(child, target);
    if (result) return result;
  }
  return null;
}

// BFS (итеративно с очередью)
function bfs(root, target) {
  const queue = [root];
  while (queue.length) {
    const node = queue.shift();
    if (node.value === target) return node;
    queue.push(...node.children);
  }
  return null;
}

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

  • Поиск элементов в DOM-дереве (например, querySelector использует DFS).
  • Навигация по файловой системе.
  • Алгоритмы на графах (социальные сети, маршрутизация).

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • Networks

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

#tree traversal

#depth-first search

#breadth-first search

#recursion

#binary tree

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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