Untitled
unknown
plain_text
2 years ago
1.5 kB
6
Indexable
protected List<E> visitDFPath2(Vertex<E> v, Vertex<E> e, Set<Vertex<E>> visited, Set<E> blockedCells, int trollsFought) {
if (v.equals(e)) {
List<E> path = new LinkedList<>();
path.add(e.getValue());
return path;
} else {
for (Vertex<E> neighbor : v.getNeighbors()) {
if (!visited.contains(neighbor)) {
if (blockedCells.contains(neighbor.getValue()) && trollsFought < 1){
visited.add(neighbor);
List<E> path = visitDFPath2(neighbor, e, visited, blockedCells, trollsFought + 1);
if (path == null){
visited.remove(neighbor);
}
else{
if (path != null) {
path.add(0, v.getValue());
return path;
}
}
}
else if (!blockedCells.contains(neighbor.getValue())) {
visited.add(neighbor);
List<E> path = visitDFPath2(neighbor, e, visited, blockedCells, trollsFought);
if (path != null) {
path.add(0, v.getValue());
return path;
}
}
}
}
return null;
}
}Editor is loading...