public IEnumerable <EnrolmentUnit> GetGrandestChildren(int nodeId) { EnrolmentUnit node = FindNode(nodeId); if (nodeId == 0) { node = new EnrolmentUnit(); } List <EnrolmentUnit> grandestChildren = new List <EnrolmentUnit>(); GrandestChildrenSearchRecursion(node, grandestChildren); return(grandestChildren); }
private void GrandestChildrenSearchRecursion(EnrolmentUnit node, List <EnrolmentUnit> storage) { var children = GetDirectChildren(node.Id); if (children.Count() == 0) { storage.Add(node); return; } foreach (var child in children) { GrandestChildrenSearchRecursion(child, storage); } }