怎么通过一个集合生成一个树
如何通过一个集合生成一个树?
我手里是这样一个集合:
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
……
以上是我自己定义的类
我自己在写递归的时候总是写的不够科学
希望各位大神指点
------解决方案--------------------
我手里是这样一个集合:
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;
}