Und ich würde auch eher this.Cont == X prüfen und die rekursiven Aufrufe nach Abfrage mit != null gleich machen, statt immer explizit left.Cont == X und right.Cont == X zu prüfen.
Und ich würde auch eher this.Cont == X prüfen und die rekursiven Aufrufe nach Abfrage mit != null gleich machen, statt immer explizit left.Cont == X und right.Cont == X zu prüfen.
Und ich würde auch eher this.Cont == X prüfen und die rekursiven Aufrufe nach Abfrage mit != null gleich machen, statt immer explizit left.Cont == X und right.Cont == X zu prüfen.
Du solltest jetzt nicht einfach verbatim jedes left.Cont und right.Cont durch this.Cont ersetzen.... ein bisschen nachdenken darfst du dann schon auch noch.
Du solltest jetzt nicht einfach verbatim jedes left.Cont und right.Cont durch this.Cont ersetzen.... ein bisschen nachdenken darfst du dann schon auch noch.
Schau mal her. Also, was muss ein einzelnes TreeNode in seiner countCont() Methode machen?
1. Es muss schauen, ob es selber ein X hält (also Cont == X). Falls ja: +1
2. Es muss schauen, ob sein linker Kindknoten existiert (left != null) und muss das Ergebnis von dessen countCont() Aufruf aufsummieren
3. Dasselbe (wie bie 2.) muss mit dem rechten Kindknoten gemacht werden
4. Am Ende gibt die aktuelle countCont() Methode das Ergebnis zurück
"I can explain it to you, but I cannot understand it for you."
Was sollen denn die beiden in der Luft stehenden Ausdrücke this.Cont != x ? 0 : anzahl + left.countCont(x); und this.Cont != x ? 0 : anzahl + right.countCont(x);, die auch nicht compilieren?
Nimm dir doch bitte erstmal eine Java IDE oder ein JDK zur Hand und probiere wenigstens aus, ob deine möglichen Lösungen wenigstens valider Java Code sind.
public int counCont(int x){
int anzahl = 0;
if(this.content == x) anzahl++; // wenn der Knoteninhalt x entspricht += 1
if(left!= null){ //linker Kindknoten ..
anzahl += left.counCont(x); //addiere auf anzahl das ergbnis von left.countCont
}
if(right!= null){ //rechts analog
anzahl += right.counCont(x);
}
return anzahl;
}