L3: Generischer Baum - JirkaDellOro/Softwaredesign GitHub Wiki
Entwickeln Sie eine generische Klasse Tree und/oder TreeNode, welche Elemente des angegebenen Datentyps in einer Baumstruktur speichert. Jeder Knoten des Baumes verweist dabei auf einen Parent-Knoten und kann auf einen oder mehrere Child-Knoten verweisen. Nur der Wurzelknoten verweist auf keinen Parent-Knoten.
Entwickeln Sie Methoden der Klasse, um neue Knoten zu erzeugen, solche Knoten anderen als Kindkoten zuzuordnen und Knoten aus dem Baum zu entfernen. Entwickeln Sie weiterhin eine Methode PrintTree(...)
, welche die im Baum gespeicherten Elemente und die hierarchische Beziehung der zugeordnete Knoten ausgibt.
Beispielsweise könnte folgender Code
var tree = new Tree<String>();
var root = tree.CreateNode("root");
var child1 = tree.CreateNode("child1");
var child2 = tree.CreateNode("child2");
root.AppendChild(child1);
root.AppendChild(child2);
var grand11 = tree.CreateNode("grand11");
var grand12 = tree.CreateNode("grand12");
var grand13 = tree.CreateNode("grand13");
child1.AppendChild(grand11);
child1.AppendChild(grand12);
child1.AppendChild(grand13);
var grand21 = tree.CreateNode("grand21");
child2.AppendChild(grand21);
child1.RemoveChild(grand12);
root.PrintTree();
die untenstehende Ausgabe erzeugen:
root
*child1
**grand11
**grand13
*child2
**grand21