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);
            }
        }