diff --git a/Baumy/src/Baum.java b/Baumy/src/Baum.java index 2010c38..528b97e 100644 --- a/Baumy/src/Baum.java +++ b/Baumy/src/Baum.java @@ -14,6 +14,7 @@ public class Baum { if(wurzel == null) { wurzel = new Knoten(wert); + return; } wurzel.add(wert); } @@ -51,7 +52,7 @@ public class Baum { { return "Baum ist noch leer"; } - + sb = new StringBuilder(); list.add(wurzel); wurzel.breitenSuche(); @@ -149,7 +150,7 @@ public class Baum { { if(linkesKind != null) { - list.add(linkesKind); + list.add(this.linkesKind); } if(rechtesKind != null) { @@ -193,9 +194,7 @@ public class Baum { { linkesKind.linkesKind = zuLöschen.linkesKind; } - - - + } } @@ -208,10 +207,40 @@ public class Baum { if(value < wert) { if(rechtesKind.value == wert) - rechtesKind = null; - else + { + if(rechtesKind.linkesKind == null && rechtesKind.rechtesKind == null) //Keine Kinder + { + rechtesKind = null; + } + else if(rechtesKind.linkesKind != null && rechtesKind.rechtesKind == null) + { + rechtesKind = rechtesKind.linkesKind; + } + else if(rechtesKind.linkesKind == null && rechtesKind.rechtesKind != null) + { + rechtesKind = rechtesKind.rechtesKind; + } + else + { + Knoten zuLöschen = rechtesKind; + rechtesKind = rechtesKind.rechtesKind.größterImTeilbaum(); + rechtesKind.linkesKind = zuLöschen.linkesKind; + if(rechtesKind != zuLöschen.rechtesKind) + { + rechtesKind.rechtesKind = zuLöschen.rechtesKind; + } + } + + + + } + + + else { rechtesKind.remove(wert); } + + } @@ -223,9 +252,13 @@ public class Baum { { if(this.rechtesKind != null) { - return this.rechtesKind.größterImTeilbaum(); + Knoten kind = this.rechtesKind.größterImTeilbaum(); + if (rechtesKind == kind) + rechtesKind = null; + return kind; } + return this; } diff --git a/Baumy/src/Main.java b/Baumy/src/Main.java index ca6d336..325ac5f 100644 --- a/Baumy/src/Main.java +++ b/Baumy/src/Main.java @@ -12,8 +12,15 @@ public static void main(String[] args) throws Exception b1.add(27); b1.add(11); + b1.add(85); + + b1.add(45); + b1.add(43); + b1.add(46); b1.remove(21); + b1.remove(45); + b1.inorder();