Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: tree, dfs, bfs

Какие алгоритмы обхода дерева ты знаешь?

Проверяет знание методов traversal для деревьев (бинарных, N-арных).

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

  1. DFS (Depth-First Search):

    • In-order (левый → корень → правый).

    • Pre-order (корень → левый → правый).

    • Post-order (левый → правый → корень).

  2. BFS (Breadth-First Search):

    • По уровням (очередь).

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

1. DFS (рекурсивный)

Pre-order:

void dfsPreOrder(Node node) {
    if (node == null) return;
    System.out.print(node.value + " "); // Корень
    dfsPreOrder(node.left);             // Левый
    dfsPreOrder(node.right);            // Правый
}

In-order (для бинарного дерева поиска выводит значения в порядке возрастания):

void dfsInOrder(Node node) {
    if (node == null) return;
    dfsInOrder(node.left);              // Левый
    System.out.print(node.value + " "); // Корень
    dfsInOrder(node.right);             // Правый
}

2. BFS (итеративный, с очередью)

void bfs(Node root) {
    Queue<Node> queue = new LinkedList<>();
    queue.add(root);
    while (!queue.isEmpty()) {
        Node node = queue.poll();
        System.out.print(node.value + " ");
        if (node.left != null) queue.add(node.left);
        if (node.right != null) queue.add(node.right);
    }
}

Пример дерева:

      1
     / \
    2   3
   / \
  4   5
  • Pre-order: 1 → 2 → 4 → 5 → 3.

  • In-order: 4 → 2 → 5 → 1 → 3.

  • BFS: 1 → 2 → 3 → 4 → 5.

Вывод:

  • DFS — для поиска элементов, проверки структуры.

  • BFS — для поиска кратчайшего пути (например, в графах).

Уровень

  • Рейтинг:

    1

  • Сложность:

    6

Навыки

  • Java

    Java

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

#tree

#dfs

#bfs

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