对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径。给定图中的两个结点的指针UndirectedGraphNode*a,UndirectedGraphNode* b(请不要在意数据类型,图是有向图),请返回一个bool,代表两点之间是否存在一条路径(a到b或b到a)。
import java.util.*; /* public class UndirectedGraphNode { int label = 0; UndirectedGraphNode left = null; UndirectedGraphNode right = null; ArrayList<UndirectedGraphNode> neighbors = new ArrayList<UndirectedGraphNode>(); public UndirectedGraphNode(int label) { this.label = label; } }*/ public class Path { ArrayList<UndirectedGraphNode> nodeList = new ArrayList<UndirectedGraphNode>(); boolean hasLine = false; public boolean checkPath(UndirectedGraphNode a, UndirectedGraphNode b) { return hasPath(a, b) || hasPath(b, a); } public boolean hasPath(UndirectedGraphNode a, UndirectedGraphNode b){ if(a == b || hasLine){ hasLine = true; return true; }else{ if(!nodeList.contains(a)){ nodeList.add(a); }else{ return false; } } for(int i = 0; i < a.neighbors.size(); i++){ hasPath(a.neighbors.get(i), b); } return hasLine; } }