ASP.Netページで作業していますが、ツリービューがあります。ツリービューでは、一部のノードにブランチなどのネストされたノードがあります。次の形式のカスタムオブジェクトのリストにデータがあります。
Id、Description、parentId
現在、ツリービューにノードを再帰的に追加する関数を使用しています。以下はコードスニペットです。
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を超えるノードでは、パフォーマンスが低下します。この再帰呼び出しをループに置き換えるアルゴリズムを提案してください。