我正在处理一个 ASP.Net 页面,其中有树视图。在树视图中,一些节点具有嵌套节点,如分支。我在以下格式的自定义对象列表中有数据:
标识、描述、父标识
现在,我正在使用一个函数来递归地将节点添加到树视图中。以下是代码片段:
private bool findParentAddNode(string id, string description, string parentid, ref List<CustomTreeNode> treeList)
{
bool isFound = false;
foreach (CustomTreeNode node in treeList)
{
if (node.id == parentid)//if current node is parent node, add in it as its child
{
node.addChild(id, description, parentid);
isFound = true;
break;
}
else if (node.listOfChildNodes != null)//have child nodes
{
isFound = findParentAddNode(id, description, parentid, ref node.listOfChildNodes);
if (isFound)
break;
}
}
return isFound;
}
上述技术效果很好,但是对于超过 30K 的节点,它的性能很慢。请提出一种算法来用循环替换这个递归调用。