图的BFS,DFS
BFS: 利用栈可控制遍历正常结束,尤其对于有环图,是不可缺少的. 在每次出队时打印!
//给定图的一个节点,实现图的广度优先遍历
public static void bfs(Node<Integer> node){
if(node == null){
return;
}
Queue<Node<Integer>> queue = new LinkedList<>();
HashSet<Node<Integer>> set = new HashSet<>();
queue.add(node);
set.add(node);
while (!queue.isEmpty()){
Node<Integer> curr = queue.poll();
System.out.println(curr.val);
for (Node<Integer> next : curr.nexts) {
if(!set.contains(next)){
queue.add(next);
set.add(next);
}
}
}
}
DFS: 深度优先遍历,每次入栈时打印
//给定一个节点,实现图的深度优先遍历
private static void dfs(Node<Integer> node) {
if(node == null){
r