Вот грубый способ создания узлов с заданной рекурсией (в прекрасном пюре из полу-псевдо)
private void CreateNodeAndInvestigateChildrenOfNode(HierarchyData data)
{
//does this node have children???
if (data.HasChildren)
{
//get children
IEnumerable<ChildRecord> childUsers = GetChildRecordsForData(data);
foreach (child in childUsers)
{
HierarchyData newNode = new HierarchyData ();
newNode.ParentNode = data;
newNode.ThisData = child;
data.ChildNodes.Add(newNode);
CreateNodeAndInvestigateChildrenOfNode(newNode);
}
}
}
Найдите свой корневой узел и вызовите метод.
Если вы используете интерфейсы IHierarchyData и IHierarchicalEnumerable и строите узлы с классами, реализующими их, то treenode примет это как прямой источник данных.