【发布时间】:2022-01-26 19:24:52
【问题描述】:
我有一个树视图控件,其中包含一个附加到每个节点的对象列表。选择节点时,我想知道所选节点和所有子节点的对象的总数。
递归函数按预期遍历树,但我没有正确聚合总和。它只添加当前节点和下一级子节点的值。
我确定我的代码中的最后一行不正确(返回 n.Maps.Count),但如果层次结构深于一层,我不知道如何聚合这些值。
感谢任何帮助。问候克里斯
private void CallingFunction()
{
.... ...
foreach (GeoSchemeTreeNode n in node.Nodes)
{
xx += AddTotal(n);
}
Console.WriteLine($"total={xx});
}
private int AddTotal(GeoSchemeTreeNode n)
{
foreach (GeoSchemeTreeNode i in n.Nodes)
{
AddTotal(i);
}
return n.Maps.Count;
}
-
您需要将递归
AddTotal
调用的结果相加,并将该总和添加到return
语句中。 -
要保存嵌套值,请在 AddTotal 中创建可选参数,该参数将存储以前的级别值。例如:
AddTotal(GeoSchemeTreeNode n, int value = 0)
并在你的 foreach 中解析它并返回value + n.Maps.Count