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.
Wenn root!=null falsch ist, ist && auch immer falsch und bei diesem Operator (&&) wird die rechte Seite nicht mehr ausgewertet.
Falls aber root!=null wahr ist, wird die rechte Seite ausgewertet. Auf der linken Seite von && steht ja jetzt true, das neutrale Element von &&, und hat deswegen keinen Einfluss mehr auf das Ergebnis.
Nun zur rechten Seite, die ja, wie bereits gesagt, nur ausgewertet wird, falls root!=null ist: Zuerst wird current==null überprüft und … hey, das sieht ja echt seltsam aus. :shock: Ich kann mir jetzt bestenfalls vorstellen, dass man sich gedacht hat, dass ja, falls current==null falsch ist, current ja nicht mehr null sein kann, deswegen ja erst die rechte Seite von || ausgewertet wird, wo ja jetzt garantiert ist, dass current!=null ist. Aber da wäre ja && bereits wahr, wenn nur current==null wahr ist; seltsam …
Hm, jetzt lese ich daraus, dass schon mal false zurückgegeben wird, wenn root==null ist (wie schon oben ersichtlich), außerdem wird false zurückgegeben, wenn zwar current!=null ist, gleichzeitig aber current.next==null ist, d. h. wenn zwar current definiert ist, aber nicht current.next.
Mir scheint das jetzt etwas klarer, obwohl …
Also ich würde eher so etwas schreiben, alles andere würde für mich keinen Sinn ergeben: