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+" ");
}
}
}
网友评论