2017.9.37
就是从一个点开始遍历,如果找到了另外一个点,就表示存在着路。
需要注意的就是,要设置visit,不然如果出现环的话,就会陷入死循环。
/**
* Definition for Directed graph.
* class DirectedGraphNode {
* int label;
* ArrayList<DirectedGraphNode> neighbors;
* DirectedGraphNode(int x) {
* label = x;
* neighbors = new ArrayList<DirectedGraphNode>();
* }
* };
*/
public class Solution {
/*
* @param graph: A list of Directed graph node
* @param s: the starting Directed graph node
* @param t: the terminal Directed graph node
* @return: a boolean value
*/
public boolean hasRoute(ArrayList<DirectedGraphNode> graph, DirectedGraphNode s, DirectedGraphNode t) {
// write your code here
LinkedList<DirectedGraphNode> queue = new LinkedList<>();
HashSet<DirectedGraphNode> visit = new HashSet<>();
queue.addFirst(s);
//visit.add(s);
while(!queue.isEmpty()){
if(!queue.isEmpty()){
s = queue.pollLast();
if(visit.contains(s)){
continue;
}
visit.add(s);
if(s.label == t.label){
return true;
}
}
if(!s.neighbors.isEmpty()){
for(DirectedGraphNode node : s.neighbors){
queue.addFirst(node);
}
}
}
return false;
}
}
本文介绍了一种基于图遍历的算法实现,该算法通过设置访问标记来避免死循环,并详细展示了如何判断两点间是否存在路径。同时强调了访问标记的重要性。
821

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



