Code: Alles auswählen
private void countEdgesRec(Node<N, E> node, HashSet<Edge<N, E>> edgeSet, HashSet<Node<N, E>> nodeSet)
{
if(node == null) return;
if(nodeSet.contains(node)) return;
nodeSet.add(node);
for(Edge<N,E> edge : node.getFanOut())
{
countEdgesRec(edge.getTargetNode(),edgeSet,nodeSet);
if(edgeSet.contains(edge)) continue;
boolean b = false;
for(Edge<N,E> otherEdge : edge.getTargetNode().getFanOut())
{
if(otherEdge.getTargetNode() == node && edgeSet.contains(otherEdge))
{
b = true;
break;
}
}
if(b) continue;
edgeSet.add(edge);
}
for(Edge<N,E> edge : node.getFanIn())
{
countEdgesRec(edge.getSourceNode(),edgeSet,nodeSet);
if(edgeSet.contains(edge)) continue;
boolean b = false;
for(Edge<N,E> otherEdge : edge.getSourceNode().getFanIn())
{
if(otherEdge.getSourceNode() == node && edgeSet.contains(otherEdge))
{
b = true;
break;
}
}
if(b) continue;
edgeSet.add(edge);
}
}
Code: Alles auswählen
public int countEdgesInConnectedGraph(Node<N, E> node)
{
if(node == null) return -1;
if(!contains(node)) return -1;
HashSet<Edge<N, E>> edgeSet = new HashSet<Edge<N, E>>();
HashSet<Node<N, E>> nodeSet = new HashSet<Node<N, E>>();
countEdgesRec(node,edgeSet,nodeSet);
return edgeSet.size();
}
Code: Alles auswählen
Antwort des Servers
Junitreport
Time – 281
Testcount – 12
Failurecount – 2
Ignorerecount – 0
Failurereport
Testheadder – testTwoFullyConnectedDirectedGraphs(graph.general.CountEdgesTest)
Message – The partial graph has an edge amount of 12 but function returned 6 expected:<12> but was:<6>
Trace
Failurereport
Testheadder – testTwoFullyConnectedDirectedGraphsWithBridge(graph.general.CountEdgesTest)
Message – The partial graph has an edge amount of 25 but function returned 13 expected:<25> but was:<13>
Trace
Kann mir jemand helfen?