Hi,
Ich hab hier einen Binearbaum, der rekursiv läuft, aber ich hänge gerade etwas an der Löschmethode, ich weis einfach nicht, wie ich dies realiesieren könnte???:L
Muss ich den Baum einfach immer wieder neu zeichnen ohne den Knoten?
Viele Grüße
Ich hab hier einen Binearbaum, der rekursiv läuft, aber ich hänge gerade etwas an der Löschmethode, ich weis einfach nicht, wie ich dies realiesieren könnte???:L
Muss ich den Baum einfach immer wieder neu zeichnen ohne den Knoten?
Viele Grüße
Java:
/**
* Ein sortierter Binaerbaum
*/
package ueb14;
public class BinaerTree {
private Knoten root;
private StringComperator comperator = new StringComperator();
private int anzahlKnoten;
/**
* Hinzuefuegen von Objekten
* @param uebergabeObjekt
*/
public void add(Object uebergabeObjekt) {
Knoten knoten = new Knoten(null, null, uebergabeObjekt);
if (root == null)
{
root = knoten;
anzahlKnoten++;
}
else
addAbBestimmtenKnoten(root, knoten);
}
public void addAbBestimmtenKnoten(Knoten ausgewaehlterKnoten,Knoten uebergabeKnoten) {
String ausgewaehlterKnotenString = (ausgewaehlterKnoten.toString());
String uebergabeKnotenString = (uebergabeKnoten.toString());
if (comperator.compare(ausgewaehlterKnotenString, uebergabeKnotenString) > 0)
{
if (ausgewaehlterKnoten.hatLinkenSohn()) {
addAbBestimmtenKnoten(ausgewaehlterKnoten.getLinkerSohn(),
uebergabeKnoten);
}
if (!ausgewaehlterKnoten.hatLinkenSohn()) {
ausgewaehlterKnoten.setLinkerSohn(uebergabeKnoten);
anzahlKnoten++;
}
}
if (comperator.compare(ausgewaehlterKnotenString, uebergabeKnotenString) < 0)
{
if (ausgewaehlterKnoten.hatRechtenSohn()) {
addAbBestimmtenKnoten(ausgewaehlterKnoten.getRechterSohn(),
uebergabeKnoten);
}
if (!ausgewaehlterKnoten.hatRechtenSohn()) {
ausgewaehlterKnoten.setRechterSohn(uebergabeKnoten);
anzahlKnoten++;
}
}
}
public String toString() {
if (root != null) {
return toString(root);
} else {
return "<leerer Baum>";
}
}
private String toString(Knoten knoten) {
String ausgabe = "";
if (knoten.getLinkerSohn() != null) {
ausgabe = ausgabe+ toString(knoten.getLinkerSohn());
}
ausgabe += knoten.getInhalt() + "\n";
if (knoten.getRechterSohn() != null) {
ausgabe = ausgabe+ toString(knoten.getRechterSohn());
}
return ausgabe;
}
/**
* @return the anzahlKnoten
*/
public int getAnzahlKnoten() {
return anzahlKnoten;
}
/**
* @return the root
*/
public Knoten getRoot() {
return root;
}
}