Java-реализация поиска в ширину (BFS) в двоичном дереве

Чтобы выполнить поиск в ширину (BFS) в двоичном дереве в Java, вы можете использовать структуру данных очереди, чтобы отслеживать узлы, которые нужно посетить. Вот пример реализации:

import java.util.LinkedList;
import java.util.Queue;
class Node {
    int data;
    Node left, right;
    public Node(int item) {
        data = item;
        left = right = null;
    }
}
class BinaryTree {
    Node root;
    public void breadthFirstSearch() {
        if (root == null)
            return;
        Queue<Node> queue = new LinkedList<>();
        queue.add(root);
        while (!queue.isEmpty()) {
            Node node = queue.poll();
            System.out.print(node.data + " ");
            if (node.left != null)
                queue.add(node.left);
            if (node.right != null)
                queue.add(node.right);
        }
    }
    public static void main(String args[]) {
        BinaryTree tree = new BinaryTree();
        tree.root = new Node(1);
        tree.root.left = new Node(2);
        tree.root.right = new Node(3);
        tree.root.left.left = new Node(4);
        tree.root.left.right = new Node(5);
        System.out.println("Breadth-first traversal of binary tree:");
        tree.breadthFirstSearch();
    }
}

В этом коде мы определяем класс Nodeдля представления каждого узла в двоичном дереве. Класс BinaryTreeсодержит метод breadthFirstSearch, который выполняет BFS с использованием Queueдля хранения узлов. Начнем с добавления корневого узла в очередь. Затем, пока очередь не пуста, мы удаляем узел из очереди, обрабатываем его (в данном случае печатаем его значение) и ставим в очередь его левый и правый дочерние узлы, если они существуют.

Чтобы протестировать код, мы создаем двоичное дерево в методе mainи вызываем метод breadthFirstSearchдля печати обхода в ширину.