Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
okay, danke. also wir können den unterschied jetz erahnen.
aber hier kommen wir jetzt voll durcheinander:
in unserem skript steht:
Um festzustellen, ob ein gegebenes Element in einem binären Suchbaum
vorhanden ist, verwendet man folgende Methode:
Code:
public static boolean member(String x, Node t) {
if (t==null) return false;
else if (x.compareTo(t.data) == 0)
return true;
else if (x.compareTo(t.data) > 0)
return member(x, t.left);
else /* x.compareTo(t.data) < 0 */
return member(x, t.right);
}
laut definition ist aber ein baum nur dann ein binärer suchbaum, wenn gilt:
alle elemente der nodes links von t sind kleiner als das elemente von t, und alle rechts davon sind grösser als das element von t.
wieso wird dann aber in dem Algorithmus oben bei
Code:
else if (x.compareTo(t.data) > 0)
return member(x, t.left);
der Algorithmus noch einmal mit dem linken Teilbaum aufgerufen und nicht im rechten?
Comparable ist ja wie folgend implementiert: >0 => o.compareTo(other) // wobei jetzt hier o größer ist als other.
Also demnach WENN o großer ist als other wie oben im code, dann müsste man ja das element nurnoch im rechten und nicht im linken Teilbaum finden können. Also unserer Meinung nach ist das script falsch(was bei unserem script durchaus möglich wäre), oder wir stehenirgendwie extremst auf dem Schlauch.