既然都用到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()) {
String str = backup.poll();//取一个元素
if(lj

本文介绍了如何在有向图中应用广度优先搜索(BFS)算法,并强调了在BFS过程中记录路径的重要性。通过使用队列作为主要数据结构,详细阐述了如何进行节点的遍历。同时,提到了使用邻接表来存储有向图,以及进行了相关的测试以验证算法的正确性。
最低0.47元/天 解锁文章
7034

被折叠的 条评论
为什么被折叠?



