Given a directed graph, design an algorithm to find out whether there is a route between two nodes.
Example
Given graph:
A----->B----->C
\ |
\ |
\ |
\ v
->D----->E
for s = B
and t = E
, return true
for s = D
and t = C
, return false
/** * 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 if(s==t) return true; if(s.neighbors.size()==0) return false; if(s.neighbors!=null) { for(int i=0;i<s.neighbors.size();i++) { if(hasRoute(graph,s.neighbors.get(i),t)) return true; } } return false; } }
时间: 2024-10-12 19:08:34