diff --git a/Baum/src/Baum.java b/Baum/src/Baum.java index 3eabd36..1432593 100644 --- a/Baum/src/Baum.java +++ b/Baum/src/Baum.java @@ -96,19 +96,22 @@ public class Baum { if (links.wert == wert) { if (links.links == null && links.rechts == null) // keine Kinder links = null; - else if (links.links != null && links.rechts == null) // linkes Kind + else if (links.links != null && links.rechts == null) // nur linkes Kind links = links.links; - else if (links.rechts != null && links.links == null) // rechtes Kind + else if (links.rechts != null && links.links == null) // nur rechtes Kind links = links.rechts; else { - Knoten alt = links; + Knoten zuLöschen = links; links = links.links.größterImTeilbaum(); - links.links = alt.links; - links.rechts = alt.rechts; + + if (links != zuLöschen.links) // den linken Knoten nur ändern, wenn es einen Teilbaum gibt + links.links = zuLöschen.links; + links.rechts = zuLöschen.rechts; } } else links.remove(wert); if (wert > this.wert && rechts != null) + // TODO Löschen komplettieren if (rechts.wert == wert) rechts = null; else