Hallo,
ich versuche seit gestern einen binären Baum zu implementieren, das Suchen, Einfügen und die Ausgabe habe ich auch soweit hinbekommen. Allerdings läuft bei mir im moment das Löschen nicht so wie ich es mir vorstelle, und ich bekomme einen StackoverflowError. Meine Idee für das Löschen sieht im moment so aus, das ich zunächst den Knoten suche der zu löschen ist, sowie den mit dem zweit Kleinsten Element. Im Quellcode sieht das im moment so aus:
Der Aufbau des Baumes ist so das ein Knoten neben dem Datum, auch zwei Zeiger enthält die jeweils auf die Teilbäume referenzieren. Leider bin ich was das Problem betrifft im moment ziemlich ratlos und wäre daher über einen kleinen Tipp woran es liegen könnte sehr dankbar.
Viele Grüsse
Dan
ich versuche seit gestern einen binären Baum zu implementieren, das Suchen, Einfügen und die Ausgabe habe ich auch soweit hinbekommen. Allerdings läuft bei mir im moment das Löschen nicht so wie ich es mir vorstelle, und ich bekomme einen StackoverflowError. Meine Idee für das Löschen sieht im moment so aus, das ich zunächst den Knoten suche der zu löschen ist, sowie den mit dem zweit Kleinsten Element. Im Quellcode sieht das im moment so aus:
Code:
public void delete(int i)
{
delete(i,null,getFirst());
}
// Löscht einen Knoten aus dem Baum
private void delete(int i,Knoten vorgaenger, Knoten aktuellerKnoten)
{
Knoten nachfolger=null;
Knoten blatt=null;
Knoten temp=null;
if(i<aktuellerKnoten.getValue() && aktuellerKnoten.getNextLeft()!=null)
{
vorgaenger=aktuellerKnoten;
aktuellerKnoten=aktuellerKnoten.getNextLeft();
this.delete(i,vorgaenger, aktuellerKnoten);
}
if(i>aktuellerKnoten.getValue() && aktuellerKnoten.getNextRight()!=null)
{
vorgaenger=aktuellerKnoten;
aktuellerKnoten.getNextLeft().getNextRight();
this.delete(i,vorgaenger, aktuellerKnoten);
}
Der Aufbau des Baumes ist so das ein Knoten neben dem Datum, auch zwei Zeiger enthält die jeweils auf die Teilbäume referenzieren. Leider bin ich was das Problem betrifft im moment ziemlich ratlos und wäre daher über einen kleinen Tipp woran es liegen könnte sehr dankbar.
Viele Grüsse
Dan