Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: tree traversal, time complexity, DFS, BFS, O(n)

Какой будет временная сложность обхода дерева?

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

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

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

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

Временная сложность обхода дерева

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

Почему O(n)?

Алгоритм обхода выполняет константное количество операций на каждый узел: проверка, добавление в стек/очередь, вывод значения. Таким образом, общее время пропорционально числу узлов n. Например, для бинарного дерева с 1000 узлами потребуется около 1000 шагов.

Пример кода (DFS на JavaScript)

function dfs(node) {
  if (!node) return;
  console.log(node.value); // посещение узла
  dfs(node.left);
  dfs(node.right);
}
// Временная сложность: O(n), где n — количество узлов

Пример кода (BFS на JavaScript)

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);
  }
}
// Временная сложность: O(n)

Вывод

Обход дерева всегда имеет линейную временную сложность O(n), что делает его эффективным для обработки всех узлов. Этот подход применяется в поиске, сериализации, вычислении высоты дерева и других задачах, где требуется полный обход структуры.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

  • Math

    Math

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

#tree traversal

#time complexity

#DFS

#BFS

#O(n)

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

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.