概念
深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS即Depth First Search。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。
分为两个情况
一种是邻街表是确定的
public class Digraph {
private int V;//节点个数
private int E;//边的条数
private Queue<Integer>[] adj;//临街表集合
public Digraph(int v){
this.V=v;
this.E=0;
this.adj=new Queue[v];
for(int i=0;i<V;i++){
adj[i]=new Queue<Integer>();
}
}
public int GetV()
{
return V;
}
public int GetE(){
return E;
}
public void addAhj(int s,int e){//添加一条边
adj[s].addNode(e);
E++;
}
public Digraph revers(){
Digraph de=new Digraph(this.V);
for(int i=0;i< this.V;i+