Просто закажите ваши данные по ParentID, первые результаты будут корневыми (-1).Затем используйте
if (ParentID == -1)
{
treeView1.Nodes.Add(ID, Title);
}
else
{
TreeNode tn = treeView1.Nodes.Find(ID, true)[0];
tn.Nodes.Add(ID, Title);
}
, чтобы убедиться, что все предыдущие узлы уже есть в дереве, и найти их по уникальному ключу (ID).