DFS

java 源码:
import java.util.ArrayList;
import java.util.LinkedList;
public class Dfs {
public static int foot[];
public static void main(String[] args) {
ArrayList <Integer> al[]=new ArrayList[6];
for(int i=0;i<al.length ;i++){
al[i]=new ArrayList<Integer>();
}
foot=new int[6];
al[0].add(1);
al[0].add(2);
al[1].add(0);
al[1].add(3);
al[2].add(0);
al[2].add(4);
al[3].add(1);
al[3].add(4);
al[3].add(5);
al[4].add(3);
al[4].add(2);
al[5].add(3);
int []visited=new int[6];
DFS(al,0,visited);
for(int t:foot)System.out.print(t+" ");
}
static void DFS(ArrayList<Integer> []al,int s,int []visited){
LinkedList<Integer> l=new LinkedList<Integer>();
l.add(s);
visited[s]=1;
int footIndex=0;
while(l.size()>0){
int vertex=l.pollLast();//根节点
foot[footIndex]=vertex;
footIndex++;
for(int i=0;i<al[vertex].size();i++){
int node=al[vertex].get(i);//叶子节点
if(visited[node]==0){
l.add(node);
visited[node]=1;
}
}
}
}
static void BFS(ArrayList<Integer> []al,int s,int []visited){
LinkedList<Integer> l=new LinkedList<Integer>();
l.add(s);
visited[s]=1;
while(l.size()>0){
int vertex=l.pollFirst();//根节点
for(int i=0;i<al[vertex].size();i++){
int node=al[vertex].get(i);//叶子节点
if(visited[node]==0){
l.add(node);
visited[node]=1;
}
}
System.out.print(vertex+" ");
}
}
}