Dies könnte so geschrieben werden;
public boolean check(BSTNode t,String key) {
return
t.word.equals(key) || check(t.left,key) || check(t.right,key)
}
oder ausführlicher;
public boolean check(BSTNode t,String key) {
if (t.word.equals(key)) return true;
if (check(t.left,key)) return true;
if (check(t.right,key)) return true;
return false;
}
Sie brauchen viel else
Aussagen nicht, weil die return
Aussagen Ausführung in der Funktion zu stoppen.
Edit:
Sie müssen auch überprüfen, dass Ihr BSTNode nicht null ist, oder werden Sie Null-Zeiger-Ausnahmen erhalten, wenn Sie das Ende des Baumes erreichen.
public boolean check(BSTNode t,String key) {
if (t == null) return false;
if (t.word.equals(key)) return true;
if (check(t.left,key)) return true;
if (check(t.right,key)) return true;
return false;
}
oder;: Dies könnte zu Beginn der Funktion, oder vor den inneren rekursiven check
Anrufe erfolgen
public boolean check(BSTNode t,String key) {
if (t.word.equals(key)) return true;
if (t.left != null && check(t.left,key)) return true;
if (t.right != null && check(t.right,key)) return true;
return false;
}
Ich habe Ihre Tags bearbeitet. Bitte achten Sie darauf, Tags auszuwählen, die dem Problem entsprechen, nicht nur Wörter, die in Ihrer Frage vorkommen. Zum Beispiel hat das Tag [tag: binary] nichts mit binären Bäumen zu tun. Dies hilft, Ihre Frage vor Leuten zu stellen, die sie beantworten können. Ich habe auch das Tag [tag: java] hinzugefügt, da ich glaube, dass Sie in Java arbeiten. Jetzt kann Stack Overflow Syntax Ihren Code korrekt hervorheben. Wenn dies die falsche Sprache ist, ändern Sie sie bitte. – Chris