1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Solution { public boolean validPath(int n, int[][] edges, int source, int destination) { Map<Integer, Set<Integer>> nodeChildrenMap = new HashMap<>(); for (int[] edge : edges) { nodeChildrenMap.putIfAbsent(edge[0], new HashSet<>()); nodeChildrenMap.get(edge[0]).add(edge[1]); nodeChildrenMap.putIfAbsent(edge[1], new HashSet<>()); nodeChildrenMap.get(edge[1]).add(edge[0]); } return dfs(source, destination, nodeChildrenMap, new HashSet<>()); }
private boolean dfs(int curr, int dest, Map<Integer, Set<Integer>> nodeChildrenMap, Set<Integer> visited) { if (curr == dest) { return true; } visited.add(curr); for (int child : nodeChildrenMap.get(curr)) { if (!visited.contains(child) && dfs(child, dest, nodeChildrenMap, visited)) { return true; } } return false; } }
|