/*****************************  TraverseTest.java  ****************************/
                                                         //         '/'
import AlgoTools.IO;                                     //      /       \
                                                         //      +       -
/** Traversierungen des binaeren Baums mit Operanden in  //    /   \   /   \
 *  den Blaettern und Operatoren in den inneren Knoten:  //    F   *   X   Y
 */                                                      //       / \
                                                         //       A B
public class TraverseTest {

  public static void main(String[] argv) {

    VerweisBaum a = new VerweisBaum(); a.setValue(new Character('A'));
    VerweisBaum b = new VerweisBaum(); b.setValue(new Character('B'));
    VerweisBaum m = new VerweisBaum(); m.setValue(new Character('*')); 
    VerweisBaum f = new VerweisBaum(); f.setValue(new Character('F'));
    VerweisBaum p = new VerweisBaum(); p.setValue(new Character('+'));
    VerweisBaum x = new VerweisBaum(); x.setValue(new Character('X'));
    VerweisBaum y = new VerweisBaum(); y.setValue(new Character('Y'));
    VerweisBaum n = new VerweisBaum(); n.setValue(new Character('-'));
    VerweisBaum d = new VerweisBaum(); d.setValue(new Character('/'));
    m.setLeft(a); m.setRight(b);       p.setLeft(f); p.setRight(m);
    n.setLeft(x); n.setRight(y);       d.setLeft(p); d.setRight(n);

    IO.print("Preorder:        ");
    Traverse.preorder(d);          IO.println(); // Ausgabe: /+F*AB-XY

    IO.print("Inorder:         ");
    Traverse.inorder(d);           IO.println(); // Ausgabe: F+A*B/X-Y

    IO.print("Postorder:       ");
    Traverse.postorder(d);         IO.println(); // Ausgabe: FAB*+XY-/

    IO.print("Klammer-Inorder: ");
    Traverse.klammerinorder(d);    IO.println(); // Ausgabe: ((F+(A*B))/(X-Y))

    IO.print("Tiefensuche:     ");
    TiefenSuche.tiefenSuche(d);    IO.println(); // Ausgabe: /+F*AB-XY

    IO.print("Breitensuche:    ");
    BreitenSuche.breitenSuche(d);  IO.println(); // Ausgabe: /+-F*XYAB

  }
}
