# Binärer Baum Ausgabe (In-/Post-/Preorder) null am Anfang?



## anos3 (1. Jun 2021)

Ist vermutlich nur ein winziger Fehler, aber stehe gerade total auf dem Schlauch wie ich die null am Anfang der Ausgaben loswerde? Ansonsten müsste alles stimmen.
Ausgabe:
Inorder: nullA C B G D F E O H J I N K M L
Preorder: nullO G C A B F D E N J H I M K L
Postorder: nullA B C D E F G H I J K L M N O



```
public class Baum {
    // Attribut Knoten
    String[] knoten;
    String preorder;
    String inorder;
    String postorder;
  
    // Konstruktor
    public Baum(int n) {
        knoten = new String[n];
    }
  
    // Methoden
    // Inorder: linkes Kind, Eltern, rechtes Kind
    public String printInorder() {
        if(knoten[0] != null) {
            printInorder(0);
        }
        return inorder;
    }
    // Hilfsmethode inorder
    public void printInorder(int i) {
        if(getLeftChild(i)<knoten.length) {
            printInorder(getLeftChild(i));
        }
        inorder+=knoten[i] + " ";
        if(getRightChild(i)<knoten.length) {
            printInorder(getRightChild(i));
        }
    }
  
    // Preoder: Eltern, Kind links, Kind rechts
    public String printPreorder() {
        if(knoten[0] != null) {
            printPreorder(0);
        }
        return preorder;
    }
    // Hilfsmethode preorder
    public void printPreorder(int i) {
        preorder+=knoten[i] + " ";
        if(getLeftChild(i)<knoten.length) {
            printPreorder(getLeftChild(i));
        }
        if(getRightChild(i)<knoten.length) {
            printPreorder(getRightChild(i));
        }
    }
  
    // Postorder: linkes Kind, rechtes Kind, Eltern
    public String printPostorder() {
        if(knoten[0] != null) {
            printPostorder(0);
        }
        return postorder;
    }
    // Hilfsmethode postorder
    public void printPostorder(int i) {
        if(getLeftChild(i)<knoten.length) {
            printPostorder(getLeftChild(i));
        }
        if(getRightChild(i)<knoten.length) {
            printPostorder(getRightChild(i));
        }
        postorder+=knoten[i] + " ";
    }
  
    // Methoden um auf Indizes der Kindknoten zuzugreifen
    private int getLeftChild(int index) {
        return 2*index + 1;
    }
    private int getRightChild(int index) {
        return 2*index + 2;
    }
}
```


```
// Testklasse
public class TestBaum {

    public static void main(String[] args) {
        // Baum erzeugen
        Baum baum = new Baum(15);
        String [] arr = {"O", "G", "N", "C", "F", "J", "M", "A", "B", "D", "E", "H", "I", "K", "L"};
        baum.knoten=arr;
      
        // Ausgabe
        System.out.println("Inorder: " + baum.printInorder());
        System.out.println("Preorder: " + baum.printPreorder());
        System.out.println("Postorder: " + baum.printPostorder());
    }

}

/* Kontrolle:
* Inorder: A C B G D F E O H J I N K M L
* Preorder: O G C A B F D E N J H I M K L
* Postorder: A B C D E F G H I J K L M N O
*/
```


----------



## anos3 (1. Jun 2021)

Da ich leider nicht weiß wie ich hier ein Thema wieder löschen kann: Habe die Lösung gefunden, die Strings in Zeile 4,5,6 müssen am Anfang mit "" initialisiert werden


----------



## CyborgIstDoof (1. Jun 2021)

In welcher Geschmacksrichtung denn: rekursiv oder iterativ?


----------

