流程:
    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();
}
}