Tree Extensions
Traverse
Visits each node in a try and applies the function.
// Will visit each node in the tree recursively and print it
var tree = new Tree("A", new Tree("B"), new Tree("C"));
tree.Traverse(node => Console.WriteLine(node.Name));
// A
// B
// C
TraverseFlat
Will create an enumerable of each node in the tree by flattening it.
var tree = new Tree("A", new Tree("B"), new Tree("C"));
foreach(var (node, depth) in tree.TraverseFlat((node) => node.GetChildren())){
Console.WriteLine($"{Indent(depth)}{node.Name}");
}
// A
// |-B
// |-C