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
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
Java:
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;
}
}
Java:
// 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
*/