In C#, there\'s the \"standard\" initializer technique { Property1 = \"a\", Property2 = \"b\" }, and there are a couple of special variants for collections (list and dictionary)
If the nodes of your tree are easy to construct, i.e. can be initialized from their value, then you can make things terser than ChaosPandion's answer, by adding an extra method:
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() { ... }
}
So:
{ item1 { item2 item3 item4 } { item5 item6 } }
Becomes:
new Tree { "item1", new Tree { "item2", "item3", "item4" }, new Tree { "item5", "item6" } };