欢迎访问宙启技术站
智能推送

Java函数实现BFS算法

发布时间:2023-08-15 11:20:19

BFS(广度优先搜索)算法是一种用于图和树的遍历算法。它使用队列数据结构来实现,逐层地对图或树进行遍历,并且能够找到从起始点到目标点的最短路径。

下面是一个使用Java实现BFS算法的例子:

import java.util.LinkedList;
import java.util.Queue;

public class BFSAlgorithm {

    // 定义一个节点类
    static class Node {
        int value;
        Node left;
        Node right;

        public Node(int value) {
            this.value = value;
            this.left = null;
            this.right = null;
        }
    }

    // BFS算法实现
    public static void bfs(Node root) {
        // 判断根节点是否为空
        if (root == null) {
            return;
        }

        // 创建一个队列用于存储节点
        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);
            }
        }
    }

    public static void main(String[] args) {
        // 创建一个二叉树
        Node root = new Node(1);
        root.left = new Node(2);
        root.right = new Node(3);
        root.left.left = new Node(4);
        root.left.right = new Node(5);
        root.right.left = new Node(6);
        root.right.right = new Node(7);

        // 使用BFS算法遍历二叉树
        System.out.print("BFS结果:");
        bfs(root);
    }
}

以上代码中,首先定义了一个节点类Node,其中包含一个值value和左右子节点leftright。然后,实现了BFS算法的函数bfs,该函数接受一个根节点作为参数。

bfs函数中,首先判断根节点是否为空,然后创建一个队列queue用于存储节点。将根节点入队后,使用一个循环遍历队列中的节点。

每次循环中,从队列中取出一个节点,并输出节点的值。然后,将节点的左右子节点入队。如果队列不为空,继续下一次循环;否则,遍历结束。

main函数中,创建一个二叉树,并调用bfs函数使用BFS算法对二叉树进行遍历,并输出结果。

运行以上代码,输出结果如下:

BFS结果:1 2 3 4 5 6 7

以上就是使用Java实现BFS算法的示例代码。BFS算法的时间复杂度为O(V+E),其中V是图或树的节点数,E是图或树的边数。