流程:
1,利用栈实现
2,从源节点开始把节点按照深度放入栈,然后弹出
3,每弹出一个点,把该节点下一个没有进过栈的邻接点放入栈
4,直到栈变空
图的表示和生成见:点击打开链接
import java.util.HashSet;
import java.util.Set;
import java.util.Stack;
public class DFS {
public static void dfs(Node node){
if(node == null){
return ;
}
System.out.print("dfs:");
Stack<Node>stack = new Stack<Node>();
Set<Node>set = new HashSet<Node>();//记录是否进过栈
stack.push(node);
set.add(node);
System.out.print(node.value+" ");//加入就打印
while(!stack.isEmpty()){
Node cur = stack.pop();
for(Node next : cur.nexts){
if(!set.contains(next)){//没进过栈的
set.add(next);
stack.push(cur);
stack.push(next);
System.out.print(next.value+" ");
break;
}
}
}
System.out.println();
}
}