最近需要完成一个点之间寻径的任务。基本可以抽象为有向图的寻径,于是复习一下。
有向图的存储方法有两种,邻接表或者邻接矩阵,对于点来说,总的点数目较多且单个点的相邻点数目不会太多,所以选择用邻接表来实现。后续可能会引入点间距离(权重),故选用dfs方式
public class Line {
public String start;
public String end;
public String getStart() {
return start;
}
public void setStart(String start) {
this.start = start;
}
public String getEnd() {
return end;
}
public void setEnd(String end) {
this.end = end;
}
public Line(String start,String end) {
this.start=start;
this.end=end;
}
}
//构建邻接表 使用的是String故使用Map若是转换为int 使用数组更佳
private static List<List<String>> getAllRoad(String start, String end, List<Line> datas) {
Map<String, List<String>> ljb = new HashMap<String, List<String>>(6);
for (Line line : datas) {
if (ljb.containsKey(line.start)) {
ljb.get(line.start).add(line.end);
} else {
List<String>