using System.Collections.Generic;
using System.Threading.Tasks;
RecursiveStructure data = new()
Children = new RecursiveStructure[]{
Children = new RecursiveStructure[]{
Children = new RecursiveStructure[]{ }
Children = new RecursiveStructure[]{ }
Children = new RecursiveStructure[]{
Children = new RecursiveStructure[]{ }
Children = new RecursiveStructure[]{ }
void NormalRecursion(RecursiveStructure data)
Console.WriteLine($"NR {data.Name}");
foreach (var child in data.Children)
void QueueRecursion(RecursiveStructure data)
var queue = new Queue<RecursiveStructure>();
var current = queue.Dequeue();
Console.WriteLine($"QR {current.Name}");
foreach (var child in current.Children)
void StackRecursion(RecursiveStructure data, int depth = 0)
var stack = new Stack<RecursiveStructure>();
var current = stack.Pop();
Console.WriteLine($"SR {current.Name}");
foreach (var child in current.Children.Reverse())
public required string Name { get; init; }
public required IEnumerable<RecursiveStructure> Children { get; init; }