Hallo Mathias,
Das verstehe ich nicht, wieso sollte ein Browser mehr Vergleiche anstellen?
Mein Fehler. Ich war davon ausgegangen, dass bei contains() der Baum nach unten gehangelt werden muss, weil man auf der _Suche_ nach einem Knoten ist:
root
* eins
* zwei
* drei
* vier
* fünf
* sechs
* sieben
* acht
* neun
root.contains(acht) müsste bei einem Traversien auf der Suche nach dem Knoten "acht" acht Vergleiche anstellen.
(other == eins) -> false
(other == zwei) -> false
(other == drei) -> false
(other == vier) -> false
(other == fünf) -> false
(other == sechs) -> false
(other == sieben) -> false
(other == acht) -> true
Allerdings: Wir kennen den Knoten ja schon ja schon, wir können also auf ihn zugreifen. Ich habe also gedanklich eine Suche assoziert, dabei sagt die Semantik von contains() ja nur: Verwandtschaftsbeziehung zwischen zwei bekannten Knoten. Und dann, ja, dann kann man vom „Zielknoten“ den Baum hochtraversieren, hier sind es nur vier Vergleiche. Anders wäre es wohl, würde man nach einem unbekannten Knoten suchen, der eine bestimmte Eigenschaft hätte, z.B. einen bestimmten String enthalten.
In drei Worten: Du hast recht. ;)
Tim