美文网首页
Java中的BFS和DFS

Java中的BFS和DFS

作者: 雇个城管打天下 | 来源:发表于2018-08-29 16:18 被阅读18次
    import java.util.*;
    
    class Main {
        public static void main(String[] args) {
            HashMap<String, String[]> map = new HashMap<>();
            map.put("A", new String[] { "B", "C" });
            map.put("B", new String[] { "A", "C", "D" });
            map.put("C", new String[] { "A", "B", "D", "E" });
            map.put("D", new String[] { "B", "C", "E", "F" });
            map.put("E", new String[] { "C", "D" });
            map.put("F", new String[] { "D" });
    
            BFS(map, "E");
            System.out.println();
            DFS(map, "A");
        }
    
        //map表示所有的点和其邻接点的关系,s表示我们要开始进行的节点
        //广度优先搜索使用队列这个数据结构
        static void BFS(HashMap map, String s) {
            Queue<String> queue = new LinkedList<>();
            queue.offer(s);
            List<String> seen = new ArrayList<>();
            seen.add(s);
            while (queue.size() > 0) {
                String vertex = queue.poll();
                String[] nodes = (String[])map.get(vertex);
                for (String w : nodes) {
                    if (!seen.contains(w)) {
                        queue.offer(w);
                        seen.add(w);
                    }
                }
                System.out.print(vertex+" ");
            }
        }
    
        //map表示所有的点和其邻接点的关系,s表示我们要开始进行的节点
        //深度优先搜索使用栈这个数据结构
        static void DFS(HashMap map,String s){
            Stack<String> stack = new Stack<>();
            stack.push(s);
            List<String> seen = new ArrayList<>();
            seen.add(s);
            while (stack.size() > 0) {
                String vertex = stack.pop();
                String[] nodes = (String[])map.get(vertex);
                for (String w : nodes) {
                    if (!seen.contains(w)) {
                        stack.push(w);
                        seen.add(w);
                    }
                }
                System.out.print(vertex+" ");
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Java中的BFS和DFS

          本文链接:https://www.haomeiwen.com/subject/llrkwftx.html