既然都用到dfs了,那就再总结一下bfs。
bfs只要就是一个记录遍历元素的问题,一般是使用队列
还是dfs一样的,用领接表记录有向图
private static List<String> getlRoadByBFS(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> li = new ArrayList<String>();
li.add(line.end);
ljb.put(line.start, li);
}
}
return getRoadByBFS(start,end,ljb);
}
private static List<String>getRoadByBFS(String start,String end,Map<String, List<String>> ljb){
Queue <String>backup = new LinkedList<>();//遍历记录
Set<String> has = new HashSet<>();//记录已经到达节点
Map<String,String> memory =new HashMap<>();//记录每点对应的上一步节点
backup.add(start);
has.add(start);
while(!backup.isEmpty()) {