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; }
时间: 2024-11-06 10:43:30