Binärer Suchbaum ausgeben

marmadog

Neues Mitglied
hallo alle,

was ich habe: eine Klasse BinaererSuchbaum in der schon die lösch, einfüge, sucheNachMin/Max, nachfolger, vorgaenger usw. Methoden drinnen sind

und auch noch das ausgeben Vor- und Rückwärts, also wenn man ein Beispiel: ('B','A','U','M','B','E','I','S','P','I','E','L') als BsBaum hat, gibt die Methode Vorwärts_ausgeben: "ABEEIILMPSU" also nachdem kleinsten element suchen und ausgeben bis der knoten = null ist....

nun meine frage: wie kann man ein Intervall [von, bis] geordnet ausgeben?
(wobei "von" und "bis" generische Datentypen sind (E)) Bsp.: von B bis M --> BAUM

hoffe ihr könnt mir weiterhelfen, denkstoß verpassen....:)

danke im voraus


PS: ich meine nicht einen Baum malen sondern ganz schlicht wie oben.
 

XHelp

Top Contributor
Welche Linearisierung benutzt du denn für die Rückwärtsausgabe? oO bei pre-, post- oder in-order bekommst du, glaube ich, nicht wirklich das gewünschte ergebnis. Oder drehst du die in-order einfach um?

Dein Beispiel scheint nicht ganz richtig zu sein:
von B bis M --> BAUM
das wird in einem binärem Suchbaum nicht klappen, denn A liegt nicht zwischen B und M (sofern wir hier vom wirklichen Alphabet sprechen)

Aber um generell einen Bereich anzugeben, müsste folgendes in der Linearisierungsmethode geschehen (bereich zwischen x und y)
a) wenn aktuelle Knoten < x ist, dann die "Ausgabe" einfach weglassen
b) wenn aktuelle Knoten > y ist, dann abbrechen.
 
Zuletzt bearbeitet:

marmadog

Neues Mitglied
[JAVA=42] public void ausgabeRueckw(){
System.out.println("--------- Ausgabe rueckwaerts -------------");
Knoten<E> kp = sucheMax();
while (kp != null) {
System.out.print(kp);
kp = vorgaenger(kp);
}
System.out.println();
} [/code]

und dies soll geschrieben werden:

[JAVA=42]void ausgabeIntervall(E von, E bis)[/code]
 

XHelp

Top Contributor
Also das hier ist der binäre Suchbaum, wenn du ihn mit ('B','A','U','M','B','E','I','S','P','I','E','L') fütterst:
bbaum.png

Deine Funktion würde "U" als max finden, und dann nur "UB" ausgeben. Zumindestmal sollte die es tun, wenn alles andere richtig gemacht wurde. (denn U hat nur einen Vorgängen, und dieser ist schon die Wurzel)

Und die Ausgabe mit dem Interval müsste mit der Idee aus meinem letzten Post klappen

[edit]
Habe mitlerweile das ganze selber Implementiert und die Idee, die ich zu dem Intervall hatte funktioniert auch in der Praxis.
[/edit]
 
Zuletzt bearbeitet:

Neue Themen


Oben