Hallo,
der Fall den du beschreibst ist schon was ziemlich kniffeliges, aber nach kurzem Überlegen liegt die Lösung auf der Hand. Du mußt bei der ersten Frage beginnend immer alle Childs durchlaufen und dabon dann wieder alle childs usw. (eine Rekursion bietet sich an). Dabei musst du immer schön prüfen ob der Knoten gleich dem Knoten, von dem du losgelaufen bist ist. Falls dies der Fall sein sollte ist ein Kreisschluss vorhanden!
Irgendwie sowas:
public boolean checkNetz(Netz netz) throws Exception {
Array knoten = netz.getKnoten();
for ( int i = 0 ; i < knoten.count() ; i++ ) {
Knoten knot = knoten.getObject(i);
boolean check = checkKnoten(knot, knot.getChilds());
if ( !check ) {
return false;
}
}
}
public boolean checkKnoten( Knoten parent, Array childs) throws Exception {
for ( int i = 0 ; i < childs.count() ; i++) {
Knoten knot = childs.getObject(i);
if ( knot == parent ) {
return false;
}
checkKnoten( parent , knot.getChilds());
}
return true;
}
Müsste grob passen.