BinBaum rekursiv ausgeben

Status
Nicht offen für weitere Antworten.
J

jacko

Gast
Hallo,

ich sitzte jetzt schon länger daran, die einzelnen Werte eines BinBaums rekursiv auszugeben.
Ich habe einen Binbaum schon erstellt, mir fehlt lediglich die Methode um die ganzen Knoten zu durchlaufen und sie absteigend von groß nach klein auf dem Screen auszugeben:


Folgender Baum:
9
/ \
3 12
/ \ \
0 5 13

Hier müsste also dann folgendes auf dem Bildschirm ausgegeben werden: 13 12 9 5 3 0

mein Baum bisher:
Code:
public class BinBaum<Int> {		
								
	private Integer k;
	private BinBaum<Integer> left;
	private BinBaum<Integer> right;
	
	public BinBaum(Integer k, BinBaum<Integer> left, BinBaum<Integer> right) {
		this.k=k;
		this.left=left;
		this.right=right;
	}

Wäre nett, wenn mir jemand bei der Methode helfen könnte, hab irgendwie nix passendes gefunden.

Vielen Dank.
Gruß
jacko
 
S

SlaterB

Gast
kein minimaler eigener Ansatz?
wie ist die Ausgabe wenn ein Baum keine Kinder hat, nur ein Blatt ist?

wie ist die Ausgabe wenn ein Baum ein 'right'-Kind hat?
 
J

jacko

Gast
Ich hatte jede Menge Ansätze, die waren nur alle Schrott muss ich leider sagen.

Falls der Baum leer ist, wird einfach Baum leer ausgegeben.
Falls der Baum nur einen Knoten(Wurzel) hat wird nur die Wurzel ausgegeben.

Ansonsten soll einfach wie oben beschrieben von groß nach klein ausgegeben werden.
 
S

SlaterB

Gast
> Falls der Baum leer ist, wird einfach Baum leer ausgegeben.
> Falls der Baum nur einen Knoten(Wurzel) hat wird nur die Wurzel ausgegeben.

das sind schon zwei korrekte aussagen, auch wenn noch der Code dazu fehlt

> Ansonsten soll einfach wie oben beschrieben von groß nach klein ausgegeben werden.

diese Aussage ist schlecht, sie hat so einen globalen Charakter,
du musst bei solchen Dingen immer nur an genau einen Knoten im Bauen denken

aus deinem Beispielbaum ergeben sich viele kleine Beispiele
9
/ \
3 12


3
/ \
0 5

12
\
13

überall ist das System gleich, immer das gleiche Verfahren,
wie ist die Ausgabe?
12 13 oder 13 12
3 5 oder 5 3
eigener Knoten, rechtes Kind oder rechtes Kind, eigener Knoten?
 
J

jacko

Gast
Die Methode soll quasi zuerst rechts entlang laufen (rechts, da ja hier die größeren Zahlen sind und links die kleineren) bis ganz runter, also über 9 zu 12 zu 13 und herausfinden, dass dies die höchste Zahl ist und diese ausgeben.
Dann wieder über 9 zu 12 und herausfinden, dass dies die nächste Zahl ist und 12 ausgeben.
Und dies immer so weiter bis rechts alles fertig ausgegeben wurde.
Dann die Wurzel ausgeben, also 9.
Und dann das ganze Verfahren links runter laufen.

Das ganze muss dann genau in dieser Reihenfolge ausgegeben werden: 13 - 12 - 9 - 5 - 3 - 0

Ansonsten weiß ich jetzt nicht genau was du meinst.
 
S

SlaterB

Gast
nun, weiter kann man da keine Tipps geben,
das Endergebnis ist also:

Code:
public class BinBaum
{

    private Integer k;
    private BinBaum left;
    private BinBaum right;

    public BinBaum(Integer k, BinBaum left, BinBaum right)
    {
        this.k = k;
        this.left = left;
        this.right = right;
    }

    public String getDescription()
    {
        String description = "";
        if (this.right != null)
        {
            description += this.right.getDescription();
        }
        description += k + ", ";
        if (this.left != null)
        {
            description += this.left.getDescription();
        }
        return description;
    }

    public static void main(String[] args)
    {
        BinBaum a = new BinBaum(13, null, null);
        a = new BinBaum(12, null, a);
        BinBaum b = new BinBaum(0, null, null);
        BinBaum c = new BinBaum(5, null, null);
        b = new BinBaum(3, b, c);
        b = new BinBaum(9, b, a);
        System.out.println(b.getDescription());
    }
}
 
M

maki

Gast
jacko,

es gibt nicht soviele Möglichekiten durch einen Baum zu wandern.

Hier ist eine Übersicht über die gängigsten Verfahren:
http://en.wikipedia.org/wiki/Tree_traversal

Also, findest du deine Art dort?
Wenn ja, welche wäre das?
Inorder, preorder, postorder oder gar level-order?
 
J

jacko

Gast
Ich kenn diese ganzen Ordnungen schon, aber weil davon keiner auf meine Anforderung zutraf, hab ich mich an euch hier gewandt.
Musste ja die großen Zahlen zuerst ausgeben, und es gab irgendwie keine Ordnung, die von Rechts unten nach links unten durchlief.
Aber vielen Dank an euch.
Ich kann den Code von Slater gerade nicht testen, werde dies aber Sonntagabend nachholen ;-)
Sieht aber sehr gut aus denke ich.

Gruß
 
J

jacko

Gast
Vielen Dank euch. Code von Slater funktioniert einwandfrei;-).

Gruß
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Passwort Brute Force rekursiv Java Basics - Anfänger-Themen 7
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
R0m1lly Kombinationen aus int array rekursiv Java Basics - Anfänger-Themen 2
L Rekursiv gegebenes Passwort herausfinden. Java Basics - Anfänger-Themen 2
P9cman Char Index rekursiv finden Java Basics - Anfänger-Themen 4
B Methoden Rekursiv festellen, ob eine Zahl gerade-oft vorkommt oder nicht Java Basics - Anfänger-Themen 4
S Methoden Methodenaufruf rekursiv zählen Java Basics - Anfänger-Themen 4
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
sashady Zahlen rekursiv zerlegen und Ziffern addieren Java Basics - Anfänger-Themen 38
jhCDtGVjcZGcfzug Fibonacci Zahlen rekursiv und iterativ Java Basics - Anfänger-Themen 21
H Binominalkoeffizient tail-rekursiv in java darstellen Java Basics - Anfänger-Themen 0
GAZ Tribonacci Folge Rekursiv Java Basics - Anfänger-Themen 11
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
A Ackermmanfunktion rekursiv Java Basics - Anfänger-Themen 4
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
H Rekursiv Methode ausführen bei Kindern Java Basics - Anfänger-Themen 12
G Methode Rekursiv umschreiben Java Basics - Anfänger-Themen 8
L Jede zweite Ziffer entfernen (rekursiv) Java Basics - Anfänger-Themen 6
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
D Pentagonale Nummern in Rekursiv Java Basics - Anfänger-Themen 14
O Enum Array Rekursiv abarbeiten Java Basics - Anfänger-Themen 44
E Weg-Suche-Problem rekursiv Java Basics - Anfänger-Themen 12
O Primzahl rekursiv mit einem Wert ohne i, wie? Java Basics - Anfänger-Themen 6
E Erste Schritte Potenz Negativ (rekursiv) Java Basics - Anfänger-Themen 2
O Rekursiv aufrufen Java Basics - Anfänger-Themen 2
F In List Rekursiv suchen Java Basics - Anfänger-Themen 12
F Iterativ in Rekursiv Java Basics - Anfänger-Themen 2
S Fibonacci Zahlen rekursiv Java Basics - Anfänger-Themen 1
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
B Fakultätsfunktion Rekursiv Berechnen aber mit Array Java Basics - Anfänger-Themen 10
J Fibonacci -Folge rekursiv berechnen Java Basics - Anfänger-Themen 18
B Wie kann ich Linien rekursiv zeichnen? Java Basics - Anfänger-Themen 4
kilopack15 Sin(x) rekursiv lösen Java Basics - Anfänger-Themen 17
T Rekursiv Tiefe eines binären Suchbaums ermitteln Java Basics - Anfänger-Themen 22
P Methoden Arrays.AsList kleinste Zahl ausgeben Rekursiv Java Basics - Anfänger-Themen 9
W A hoch N Rekursiv Java Basics - Anfänger-Themen 3
K Rechtecke rekursiv zeichnen Java Basics - Anfänger-Themen 20
V Quadrate rekursiv zeichnen Java Basics - Anfänger-Themen 7
M Fibonacci rekursiv mittels Cache Java Basics - Anfänger-Themen 17
E Binärbaum - von rekursiv zu iterativ Java Basics - Anfänger-Themen 10
Y Rekursiv Palindrom herausfinden Java Basics - Anfänger-Themen 5
B Fibonacci Zahlen rekursiv Array Java Basics - Anfänger-Themen 12
M String rekursiv Spiegeln mit Originalwort davor Java Basics - Anfänger-Themen 3
K Türme von Hanoi - Rekursiv. Java Basics - Anfänger-Themen 1
T MergeSort rekursiv programmieren Java Basics - Anfänger-Themen 8
M Zahlenpyramide rekursiv programmieren Java Basics - Anfänger-Themen 7
hello_autumn Potenz selber berechnen, Rekursiv. Java Basics - Anfänger-Themen 6
V Text wüerfeln-Rekursiv Java Basics - Anfänger-Themen 4
J Baum rekursiv durchlaufen Java Basics - Anfänger-Themen 2
D Münzverteilung Möglichkeiten | Rekursiv Java Basics - Anfänger-Themen 3
R Hanoi rekursiv lösen Problem Java Basics - Anfänger-Themen 1
D Rekursiv Kombinationen ausgeben klappt nur bei einer Wiederholung Java Basics - Anfänger-Themen 4
shiroX OOP String rekursiv zurückgeben Java Basics - Anfänger-Themen 6
Z Fibonacci rekursiv meine Erklärung stimmt so? Java Basics - Anfänger-Themen 2
S java rekursiv iterativ hilfee :s Java Basics - Anfänger-Themen 5
E Erste Schritte Pi, rekursiv Java Basics - Anfänger-Themen 6
A Frage Methode ggt Rekursiv Java Basics - Anfänger-Themen 5
E Hanoi-Varianten rekursiv Java Basics - Anfänger-Themen 2
P Hanoi rekursiv zu iterativ umbauen Java Basics - Anfänger-Themen 20
P Mittelwert rekursiv Java Basics - Anfänger-Themen 13
E Integral Rekursiv Java Basics - Anfänger-Themen 15
M MergeSort rekursiv Java Basics - Anfänger-Themen 2
D Ziffer in Zahl Rekursiv Java Basics - Anfänger-Themen 4
B Array rekursiv untersuchen Java Basics - Anfänger-Themen 21
I Rekursiv Java Basics - Anfänger-Themen 13
C Rekursiv Zahlenfolgen berechnen mit zwei Variablen Java Basics - Anfänger-Themen 5
K Rekursiv zu Literal Java Basics - Anfänger-Themen 12
R Verzeichnisse rekursiv nach Dateiduplikaten durchsuchen Java Basics - Anfänger-Themen 5
L File Tree rekursiv Java Basics - Anfänger-Themen 10
W Binomialkoeffizient iterativ/rekursiv Java Basics - Anfänger-Themen 2
X Addition rekursiv ohne Schleife Java Basics - Anfänger-Themen 10
M Sudoku Rekursiv lösen Java Basics - Anfänger-Themen 9
E Datentypen ein java problem rekursiv loesen Java Basics - Anfänger-Themen 2
K indexOf selbst rekursiv definieren Java Basics - Anfänger-Themen 4
M Fibonacci-Linear und Rekursiv Java Basics - Anfänger-Themen 14
J Java Rekursiv vs(zu) Iterativ Hilfe Java Basics - Anfänger-Themen 3
D preOrder, inOrder, postOrder rekursiv zusammensetzen aus String Java Basics - Anfänger-Themen 1
K Binomialkoeffizient rekursiv berechnen Java Basics - Anfänger-Themen 8
J eulersche rekursiv berechnen Java Basics - Anfänger-Themen 6
J Suchbaumeigenschaft rekursiv programmieren Java Basics - Anfänger-Themen 3
T Rekursiv Vokale zählen Java Basics - Anfänger-Themen 19
G Bestimmte Ebene eines Baumes rekursiv ausgeben Java Basics - Anfänger-Themen 49
F Sortieralgorithmus von rekursiv auf iterativ? Java Basics - Anfänger-Themen 21
G Sudoku rekursiv lösen Java Basics - Anfänger-Themen 10
S Stringlänge Rekursiv ermitteln Java Basics - Anfänger-Themen 2
dognose Verzeichnis rekursiv auslesen / beschränkte Apis. Java Basics - Anfänger-Themen 6
0 a hoch b rekursiv - wie stoppen? Java Basics - Anfänger-Themen 3
T Ordnerstrucktur rekursiv auslesen Java Basics - Anfänger-Themen 9
G Rekursiv die größte Zahl eines Arrays Java Basics - Anfänger-Themen 6
G Rekursiv Array Elemente quadrieren Java Basics - Anfänger-Themen 2
N Fibo Zahlen:iterativ,rekursiv Anzahl der Additionen zählen Java Basics - Anfänger-Themen 2
P Permutationen einer Tour rekursiv Java Basics - Anfänger-Themen 4
G Baumstruktur rekursiv durchlaufen Java Basics - Anfänger-Themen 2
B Kürzesten Weg zwischen mehreren Punkten finden (rekursiv) Java Basics - Anfänger-Themen 5
L Kombinationen einer Menge rekursiv berechnen Java Basics - Anfänger-Themen 11
W Rekursiv Zeichen einfügen Java Basics - Anfänger-Themen 6
M Verzeichnisse rekursiv durchlaufen und dann RegEx Java Basics - Anfänger-Themen 6
G Array rekursiv teilen und aufsummieren Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben