Methoden Binärbaum Inorder Traversierung in Array speichern

void19

Neues Mitglied
Hallo,
ich bräuchte Hilfe bei einer Aufgabe. Wir sollen folgenden Code:
Java:
public void inorder() {
       if (!this.isEmpty()) {
           this.getLeft().inorder();
           System.out.print(this.getValue());
           this.getRight().inorder();
       }
   }
in eine Methode public Integer[] inorder() ändern, die die Werte nicht mehr auf die Konsole ausgibt, sondern in einem Array gepeichert. (this.getValue() liefert btw den Wert der Wurzel). Mein Versuch sieht bis jetzt so aus:

Java:
public Integer[] inorder() {
        ArrayList <Integer> tmp = new ArrayList<>();
        if(!this.isEmpty()) {
            this.getLeft().inorder();
            tmp.add(this.getValue());
            this.getRight().inorder();       
        }
        Integer[]inorder = new Integer[tmp.size()];
        tmp.toArray(inorder);
        //Ausgabe
        for(int i = 0; i<inorder.length; i++) {
            System.out.print(inorder[i] + " ");
        }
        return inorder;
    }

Aber es funktioniert leider nicht so ganz. Der Baum, mit dem ich die Methode getestet habe, sieht so aus:, d.h. eigentlich müsste die Ausgabe ja so aussehen: 3 2 5 4 6 7 9 8 10. Tatsächlich wird aber 3 2 5 4 6 9 8 10 ausgegeben, also es stimmt eigentlich alles bis auf dass die Wurzel fehlt. Kann mir jemand helfen, das zu beheben?

Schonmal Danke im Voraus. :)
dzkloztn95nnevlyj.jpg
 

httpdigest

Top Contributor
Ich würde die Traversierungsmethode nur als interne Iteration definieren und die Aktion, die tatsächlich bei jedem Knoten angewandt werden soll, als externe Funktion/Consumer als Parameter reingeben.
Java:
import java.util.*;
import java.util.function.*;
public class Node<T> {
  T value;
  Node<T> left, right;
  Node(Node<T> l, T v, Node<T> r) {
    this.left = l;
    this.value = v;
    this.right = r;
  }
  Node(T v) {
    this.value = v;
  }
  void traverseInorder(Consumer<T> c) {
    if (left != null)
      left.traverseInorder(c);
    c.accept(value);
    if (right != null)
      right.traverseInorder(c);
  }
  public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    Node<Integer> root = new Node<>(
        new Node<>(
            new Node<>(3), 2, new Node<>(
                new Node<>(5), 4, new Node<>(6))),
            7,
            new Node<>(new Node<>(9), 8, new Node<>(10))
        );
    root.traverseInorder(v -> list.add(v));
    System.out.println(list);
  }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Wie greift man auf die Knoten in einem Binärbaum zu? Java Basics - Anfänger-Themen 5
T Binärbaum-Suche Implementation Java Basics - Anfänger-Themen 6
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
D Binärbaum Blätter finden und Ausgeben Java Basics - Anfänger-Themen 22
O BinärBaum einfügen Java Basics - Anfänger-Themen 13
E Erste Schritte Testklasse Binärbaum Java Basics - Anfänger-Themen 10
A Größten Eintrag aus Binärbaum löschen Java Basics - Anfänger-Themen 4
L Ganzen BinärBaum ausgeben? Java Basics - Anfänger-Themen 3
L Binärbaum (Stammbaum) Java Basics - Anfänger-Themen 8
S Binärbaum in PreOrder in ArrayList speichern Java Basics - Anfänger-Themen 0
J Methoden Binärbaum, Traversierung in Array speichern Java Basics - Anfänger-Themen 18
K BinärBaum Java Basics - Anfänger-Themen 4
J Max. Anzahl von Knoten im Binärbaum Java Basics - Anfänger-Themen 3
M Werte der Knoten in Binärbaum addieren (iterativ) Java Basics - Anfänger-Themen 6
C Binärbaum mit grafischer Ausgabe Java Basics - Anfänger-Themen 0
J Binärbaum formatiert ausgeben. Java Basics - Anfänger-Themen 7
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
E Binärbaum - von rekursiv zu iterativ Java Basics - Anfänger-Themen 10
W Größtes Element im unsortierten Binärbaum Java Basics - Anfänger-Themen 7
N Generischer Binärbaum - löschen Java Basics - Anfänger-Themen 1
M Binärbaum mit parent-Zeigern Java Basics - Anfänger-Themen 1
B Methoden BinärBaum als String Knoten löschen Java Basics - Anfänger-Themen 5
S Binärbaum kopieren Java Basics - Anfänger-Themen 6
B Binärbaum mit java implementieren! Java Basics - Anfänger-Themen 5
D Binärbaum Suche Java Basics - Anfänger-Themen 5
D Binärbaum probleme Java Basics - Anfänger-Themen 4
P Binärbaum - Primärschlüssel Java Basics - Anfänger-Themen 3
X Fehler Binärbaum Java Basics - Anfänger-Themen 6
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
N Binärbaum/Implementierung Java Basics - Anfänger-Themen 9
P Binärbaum Ordnungsproblem Java Basics - Anfänger-Themen 8
P Generischer Binärbaum (compareTo Frage) Java Basics - Anfänger-Themen 4
P einen binärbaum implementieren Java Basics - Anfänger-Themen 4
M Binärbaum - Problem bei Knoten anhängen / löschen Java Basics - Anfänger-Themen 5
B Binärbaum höhe herausfinden Java Basics - Anfänger-Themen 12
L Rot Scharz Baum von Binärbaum erben Java Basics - Anfänger-Themen 9
S Klassen Aufgabe: Binärbaum überprüfen Java Basics - Anfänger-Themen 16
S Binärbaum Java Basics - Anfänger-Themen 9
S Variable Parameterliste in Binärbaum Java Basics - Anfänger-Themen 2
N BinärBaum Hilfestellung Java Basics - Anfänger-Themen 8
S Binärbaum prüfen, ob sortiert oder unsortiert Java Basics - Anfänger-Themen 6
W Binärbaum zahlen addieren Java Basics - Anfänger-Themen 7
S Binärbaum - Klasse Knoten - Methode Suchen Java Basics - Anfänger-Themen 5
S Binärbaum Java Basics - Anfänger-Themen 7
I Binärbaum Java Basics - Anfänger-Themen 5
S Bitte um Hilfe beim unsortierten Binärbaum!! Java Basics - Anfänger-Themen 6
J Binärbaum getSize Java Basics - Anfänger-Themen 4
P Fragen zum Binärbaum Java Basics - Anfänger-Themen 3
S Binärbaum implementieren Java Basics - Anfänger-Themen 6
K Tiefe im Binärbaum Java Basics - Anfänger-Themen 2
G generischer binärbaum Java Basics - Anfänger-Themen 9
G Binärbaum und Wrapperklassen Java Basics - Anfänger-Themen 6
F Binärbaum codieren. Codeproblem! Java Basics - Anfänger-Themen 4
D rekursion im binärbaum Java Basics - Anfänger-Themen 11
0 Binärbaum als verkettete Liste Java Basics - Anfänger-Themen 3
T Binärbaum - noch ein "klitzekleiner Fehler" Java Basics - Anfänger-Themen 4
B Binärbaum auf Vollständigkeit prüfen Java Basics - Anfänger-Themen 15
G Frage zur einfügen in einem Binärbaum Java Basics - Anfänger-Themen 21
G Binärbaum grafisch darstellen Java Basics - Anfänger-Themen 4
S Binary Search Tree - Nummerierung in Inorder Java Basics - Anfänger-Themen 5
E Preorder Inorder Postoder Java Basics - Anfänger-Themen 9
D preOrder, inOrder, postOrder rekursiv zusammensetzen aus String Java Basics - Anfänger-Themen 1
L Indorder Traversierung eines binären Suchbaumes Java Basics - Anfänger-Themen 1
B Baum Traversierung Postorder Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben