4.2 Given a directed graph, design an algorithm to find out whether there is a route between two nodes.
Node
{
List<Node> neighbours;
}
boolean isConnected(Node from, Node to)
{
Stack<Node> toVisit = initStack();
Set<Node> seen = initSet();
toVisit.push(from);
while (!toVisit.isEmpty())
{
Node n = toVisit.pop();
if (n == to)
return true;
while (Node neighbour : n.neighbours)
{
if (!seen.contains(neighbour))
{
seen.add(neighbour);
toVisit.add(neighbour);
}
}
}
return false;
}原文:http://7371901.blog.51cto.com/7361901/1583040