深度优先搜索树算法
上课学习到的算法就在这里写一下
算法的思路其实就是在一个图中,从某个结点出发,一直沿着出度结点出发,再从该出度结点出发,直到没有出度或结点被访问过,递归调用。中间加计时器记录结点的发现时间和完成时间。图是有向图或者无向图其实没什么影响。
我用java来实现这个算法
先定义一个类,用作结点的表示
class v{
String v_name = "";
int v_c = 0; //节点颜色color,0白 1灰 2黑
int dt = 0; //发现时间
int ft = 0; //完成时间
v v_p = null; //父节点(上个节点)
ArrayList<v> bian = new ArrayList<v>();//邻接结点集合
//用来给结点取名
v(String name){
this.v_name = name;
}
}
初始的计时器,用来记录发现时间和搜索完成时间
public static int time = 0; //计时器初始0
在主函数中定义存储结构并初始化。
//结点队列
Queue<v