Pseudocode:
Code:
void FillTree (DataTable dt, TreeNode node, ref int index, int level)
{
TreeNode currentNode;
while (index<DataTable.RowCount)
{
int lv = (int) DataTable.Rows[index]["Level"];
if (lv < level)
return;
string name = (string)DataTable.Rows[index]["Name"];
index++;
if (lv == level)
currentNode = node.Add(name);
else
FillTree(dt, thisNode, index, level + 1)
}
}
Ungetestet. Ich würde es aber iterativ lösen (wegen tail recursion).
Achtung! Die Abfolge der Daten in der DataTable muss einem Muster entsprechen, das wird hier nicht geprüft.
Einen Baum speichert man jedoch i.A. anders ab, aber das ist sicherlich bekannt. Falls nicht, hier eine mögliche Tabellenstruktur: