Чтобы выполнить поиск в ширину (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для печати обхода в ширину.