怎么通过一个集合生成一个树

如何通过一个集合生成一个树?
我手里是这样一个集合:
id=0,name=a,parentid=null
id=1,name=b,parentid=0
id=2,name=c,parentid=1
id=3,name=d,parentid=0
id=4,name=e,parentid=3
id=5,name=f,parentid=4
id=6,name=g,parentid=1
……
class TreeNode
    {
        public TreeNode()
        {
            treeNode = new List<TreeNode>();
        }
        public string id { get; set; }
        public string name { get; set; }
        public string parent { get; set; }
        public bool isleaf { get; set; }
        public List<TreeNode> treeNode { get; set; }
    }

以上是我自己定义的类
我自己在写递归的时候总是写的不够科学
希望各位大神指点

------解决方案--------------------
void CreateFirstTree()
        {
            foreach (TreeNode trn in treeAreaList)
            {
                if (trn.parent == "null")
                {
                    treeArea.treeNode.Add(trn);
                }
            }
        }


TreeNode createTree(TreeNode parentNode)
        {
            if (parentNode.treeNode == null)
                return treeArea;
            for (int i = 0; i < parentNode.treeNode.Count(); i++)
            {
                for (int j = 0; j < treeAreaList.Count(); j++)
                {
                    if (parentNode.treeNode[i].id == treeAreaList[j].parent)
                    {
                        parentNode.treeNode[i].treeNode.Add(treeAreaList[j]);
                        treeAreaList.Remove(treeAreaList[j]);
                        createTree(parentNode.treeNode[i]);
                    }
                }
                if (parentNode.treeNode[i].treeNode == null)
                    return treeArea;
            }
            return treeArea;
        }