k,
so gibt es im Baum keinen Knoten der mehr als
k
Teilbäume besitzt oder besitzen kann.
‚www.stefan-baur.de’,
wird durch einen einzigen Baum repräsentiert;
das Menü, das Inhaltsverzeichnis sowie jede einzelne Seite, jeder Textbaustein, so klein er auch sein mag,
werden über Operationen der Baumstruktur automatisch erzeugt.
So kann ich mich als Homepagebetreiber auf das Wesentliche, auf den eigentlichen Inhalt, konzentrieren,
anstatt mich mit unnötigen Synchronisationsproblemen herumschlagen zu müssen.
O(n)
auf
O(log n)
herunterzubrechen.
import java.util.LinkedList;
// Jeder Knoten besitzt einen Namen und ggf. Kindknoten.
// Ein Knoten ohne Kinder ist hier automatisch ein Blattknoten.
// Der Knotentyp heißt hier SimpleTreeNode.
public class SimpleTreeNode {
private String name;
private LinkedList<SimpleTreeNode> children;
public SimpleTreeNode(String name) {
this.name = name;
this.children = new LinkedList<SimpleTreeNode>();
}
// Kindknoten hinzufügen.
public SimpleTreeNode add(SimpleTreeNode child) {
this.children.add(child);
return child;
}
// Baum als Text.
public String toString() {
return this.toString("");
}
// Baum als Text mit einem bestimmten Einrückstring.
public String toString(String indent) {
String result = "";
result += indent + this.name + "\r\n";
for (int i = 0; i < this.children.size(); i++) {
result += this.children.get(i).toString(indent + (i + 1) + ".");
}
return result;
}
// Kleiner Baumtest, lass wachsen!
public static void main(String[] arguments) {
/* Baum aufbauen. */
// Die Wurzel des Baumes.
SimpleTreeNode root = new SimpleTreeNode("Wurzel (Mein Buch)");
// Erster Teilbaum der Wurzel.
SimpleTreeNode branch1 = root.add(new SimpleTreeNode("Ast (Einleitung)"));
branch1.add(new SimpleTreeNode("Blatt"));
branch1.add(new SimpleTreeNode("Blatt"));
branch1.add(new SimpleTreeNode("Blatt"));
// Zweiter Teilbaum der Wurzel.
SimpleTreeNode branch2 = root.add(new SimpleTreeNode("Ast (Hauptteil)"));
branch2.add(new SimpleTreeNode("Blatt"));
SimpleTreeNode branch22 = branch2.add(new SimpleTreeNode("Ast"));
branch22.add(new SimpleTreeNode("Blatt"));
branch22.add(new SimpleTreeNode("Blatt"));
branch22.add(new SimpleTreeNode("Blatt"));
branch22.add(new SimpleTreeNode("Blatt"));
branch22.add(new SimpleTreeNode("Blatt"));
branch2.add(new SimpleTreeNode("Blatt"));
// Dritter Teilbaum der Wurzel.
root.add(new SimpleTreeNode("Blatt (Schluss)"));
/* Ausgabe des Baumes */
System.out.println(root.toString());
}
}
Wurzel (Mein Buch)
1.Ast (Einleitung)
1.1.Blatt
1.2.Blatt
1.3.Blatt
2.Ast (Hauptteil)
2.1.Blatt
2.2.Ast
2.2.1.Blatt
2.2.2.Blatt
2.2.3.Blatt
2.2.4.Blatt
2.2.5.Blatt
2.3.Blatt
3.Blatt (Schluss)
toString
der Klasse
SimpleTreeNode
derart umzuschreiben, dass der Baum als
XML-Struktur
ausgegeben wird.
Diesbezüglich können Sie sich von der
Java-Methode
toXML
unter
Dequeue
beflügeln lassen.
Nebenbei bemerkt, wird mit XML in der Regel ein für den Menschen lesbarer Objektbaum beschrieben.