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
⚠️ **GitHub.com Fallback** ⚠️