117 lines
2.9 KiB
Java
117 lines
2.9 KiB
Java
import java.util.Random;
|
|
|
|
/**
|
|
* Implementierungen der drei Traversierungsarten auf
|
|
* Binärbäumen mit Zahl-Inhalten.
|
|
*/
|
|
public class Traversierungen {
|
|
|
|
private BinaryTree<Integer> root;
|
|
|
|
public Traversierungen() {
|
|
// Erstellen eines Integer-Baumes mit
|
|
// 15 Knoten
|
|
// 0.5 Prozent der Knoten werden im linken Teilbaum generiert
|
|
// wobei zufällig ca. 20 Prozent der Knoten doch rechts einsortiert werden
|
|
root = Trees.generateIntegerTree(3, 0.5, 10);
|
|
}
|
|
|
|
/**
|
|
* Aufruf für die Preorder-Traversierung.
|
|
*
|
|
* @see #preorder(BinaryTree)
|
|
*/
|
|
public void preorder() {
|
|
preorder(root);
|
|
}
|
|
|
|
/**
|
|
* Rekursive Methode für die Preorder-Traversierung.
|
|
* @param pRoot Der Wurzelknoten des aktuellen Teilbaumes.
|
|
*/
|
|
public void preorder( BinaryTree<Integer> pRoot ) {
|
|
// TODO: Ausgabe das Baumes auf der Kommandozeile in Preorder
|
|
}
|
|
|
|
public void printHirarchical() {
|
|
printHirarchical(root, 0);
|
|
}
|
|
|
|
public void printHirarchical(BinaryTree<Integer> pRoot, int xOff) {
|
|
if (pRoot.getContent() == null) {
|
|
xOff--;
|
|
return;
|
|
}
|
|
if (pRoot.getLeftTree() != null) {
|
|
printOffset(xOff);
|
|
System.out.println(pRoot.getContent());
|
|
xOff++;
|
|
printHirarchical(pRoot.getLeftTree(), xOff);
|
|
}
|
|
if (pRoot.getRightTree() != null) {
|
|
printOffset(xOff);
|
|
System.out.println(pRoot.getContent());
|
|
xOff++;
|
|
printHirarchical(pRoot.getRightTree(), xOff);
|
|
}
|
|
}
|
|
|
|
private void printOffset(int off) {
|
|
for (int i = 0; i < off; i++) {
|
|
if (i == off - 1) {
|
|
System.out.print("|> ");
|
|
} else {
|
|
System.out.print("| ");
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Aufruf für die Postorder-Traversierung.
|
|
*
|
|
* @see #postorder(BinaryTree)
|
|
*/
|
|
public void postorder() {
|
|
postorder(root);
|
|
}
|
|
|
|
/**
|
|
* Rekursive Methode für die Postorder-Traversierung.
|
|
* @param pRoot Der Wurzelknoten des aktuellen Teilbaumes.
|
|
*/
|
|
public void postorder( BinaryTree<Integer> pRoot ) {
|
|
// TODO: Ausgabe das Baumes auf der Kommandozeile in Postorder
|
|
}
|
|
|
|
/**
|
|
* Aufruf für die Inorder-Traversierung.
|
|
*
|
|
* @see #inorder(BinaryTree)
|
|
*/
|
|
public void inorder() {
|
|
inorder(root);
|
|
}
|
|
|
|
/**
|
|
* Rekursive Methode für die Inorder-Traversierung.
|
|
* @param pRoot Der Wurzelknoten des aktuellen Teilbaumes.
|
|
*/
|
|
public void inorder( BinaryTree<Integer> pRoot ) {
|
|
// TODO: Ausgabe das Baumes auf der Kommandozeile in Inorder
|
|
}
|
|
|
|
/**
|
|
* Findet das Maximum im Baum.
|
|
*/
|
|
public int findMax() {
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Addiert pNum zu jedem Wert im Binärbaum.
|
|
*/
|
|
public void add( int pNum ) {
|
|
|
|
}
|
|
}
|