java dfs算法怎么实现

   2024-10-13 8410
核心提示:深度优先搜索(DFS)是一种用于遍历或搜索树或图的算法,其基本思想是从起始节点开始,沿着一条路径尽可能深地搜索,直到到达叶

深度优先搜索(DFS)是一种用于遍历或搜索树或图的算法,其基本思想是从起始节点开始,沿着一条路径尽可能深地搜索,直到到达叶子节点或者无法继续搜索为止,然后回溯到上一个节点,选择另一条路径继续搜索。以下是一个简单的Java实现DFS算法的例子:

import java.util.List;import java.util.Stack;public class DFS {    public void dfs(List<List<Integer>> graph, int start) {        boolean[] visited = new boolean[graph.size()];        Stack<Integer> stack = new Stack<>();        stack.push(start);        while (!stack.isEmpty()) {            int node = stack.pop();            if (!visited[node]) {                System.out.print(node + " ");                visited[node] = true;                for (int neighbor : graph.get(node)) {                    if (!visited[neighbor]) {                        stack.push(neighbor);                    }                }            }        }    }    public static void main(String[] args) {        List<List<Integer>> graph = List.of(                List.of(1, 2),                List.of(0, 2, 3),                List.of(0, 1, 4),                List.of(1),                List.of(2)        );        DFS dfs = new DFS();        dfs.dfs(graph, 0);    }}

在上面的例子中,我们首先创建了一个boolean数组用于记录节点是否被访问过,然后创建一个栈用于存储待访问的节点。在DFS方法中,从起始节点开始,不断地遍历邻居节点,并将未访问过的邻居节点加入栈中。当栈为空时,表示搜索完成。在main方法中,我们定义了一个简单的图,并调用dfs方法从节点0开始进行深度优先搜索。

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号