Created
January 23, 2020 00:19
-
-
Save dnavas77/01436098eefa3c06b56c43ac5ee3de46 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//DFS | |
public boolean hasPathDFS(int source, int destination) { | |
HashSet<Integer> visited = new HashSet<>(); | |
return hasPathDFS(getNode(source), getNode(destination), visited); | |
} | |
private boolean hasPathDFS(Node source, Node destination, HashSet<Integer> visited) { | |
if (visited.contains(source.id)) { | |
return false; | |
} | |
visited.add(source.id); | |
if (source == destination) { | |
return true; | |
} | |
for (Node child : source.adjacent) { | |
if (hasPathDFS(child, destination, visited)) { | |
return true; | |
} | |
} | |
return false; | |
} | |
// BFS | |
public boolean hasPathBFS(int source, int destination) { | |
return hasPathBFS(getNode(source), getNode(destination)); | |
} | |
private boolean hasPathBFS(Node source, Node destination) { | |
LinkedList<Node> nextToVisit = new LinkedList<>(); | |
HashSet<Integer> visited = new HashSet<>(); | |
nextToVisit.add(source); | |
while (!nextToVisit.isEmpty()) { | |
Node node = nextToVisit.remove(); | |
if (node == destination) { | |
return true; | |
} | |
if (visited.contains(node.id)) { | |
continue; | |
} | |
for (Node child : node.adjacent) { | |
nextToVisit.add(child); | |
} | |
} | |
return false; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment