I have this following code which works fine to detect cycles in directed Graph. something I do not like here is return true
appearing in conditional statement if (!t.isVisited && isCyclicDirected(t))
. I am returning true
whether or not the if
statement passes true
. I am looking to simplify this code for better readability. Thanks
public boolean isCyclicDirected(Vertex v){
if (v.isVisited){
return true;
}
v.setVisited(true);
Iterator<Edge> e = v.adj.iterator();
while (e.hasNext()){
Vertex t = e.next().target;
if (!t.isVisited && isCyclicDirected(t))
return true;
else return true;
}
return false;
}
The above code is derived from refactoring this code below
public boolean isCyclicDirected(Vertex v){
if (v.isVisited){
return true;
}
v.setVisited(true);
Iterator<Edge> e = v.adj.iterator();
while (e.hasNext()){
Vertex t = e.next().target;
if (!t.isVisited) {
if (isCyclicDirected(t))
return true;
}
else return true;
}
return false;
}