Если узлы вашего дерева легко построить, то есть их можно инициализировать по их значению, тогда вы можете сделать вещи более краткими, чем ответ ChaosPandion, добавив дополнительный метод:
class Tree : IEnumerable
{
public string Value { get; set; }
public void Add(Tree t) { ... }
// Add this method
public void Add(string s)
{
Add(new Tree { Value = s });
}
public IEnumerator GetEnumerator() { ... }
}
Итак:
{ item1 { item2 item3 item4 } { item5 item6 } }
становится:
new Tree { "item1", new Tree { "item2", "item3", "item4" }, new Tree { "item5", "item6" } };