Это очень похоже на дерево, хотя я обычно моделирую это более явно с классом дерева, подобным этому:
public class Tree<T>
{
public T Item { get; set; }
public IList<T> Children { get; }
}
Ваш код выглядит как комбинация дерева и Composite , хотя вы не совсем там, так как перечислитель не включает элемент 'root'.
Дизайн, представленный в настоящее время, выглядит немного не так. Я бы либо потянул его больше в направлении явного Дерева, как указано выше, либо в направлении истинного Композита.