c# - 显示节点数和树的深度 C#
解决方案
对于遍历树(或任何类似树的东西,真的),您几乎需要递归 - 一个调用自身的函数,直到它到达树中每个分支的末尾。
public int CountTreeNodes(TreeNodeCollection nodes)
{
int count = nodes.Count;
foreach (TreeNode node in nodes)
{
if (node.Nodes.Count > 0) count += CountTreeNodes(node.Nodes);
}
return count;
}
上面先加上一级节点的个数来统计。然后在节点上循环,如果一个节点有子节点,则调用自身,然后将其添加到计数中。
去测试:
TreeView tv = new TreeView();
for (int i=0; i < 10; i++)
{
TreeNode node = new TreeNode(i.ToString());
for (int j = 0; j < 10; j++) node.Nodes.Add(j.ToString());
tv.Nodes.Add(node);
}
int count = CountTreeNodes(tv.Nodes);
这应该返回总共 110 个节点。第一层有 10 个,然后每个有 10 个子节点,所以 10 + 10 * 10 = 110。
推荐阅读
- reactjs -
组件提前 1 天返回 - 我该如何处理? - azure - PowerShell - 添加类型开关参数
- php - 从 codeigniter 中的视图发送动态电子邮件附件
- text-to-speech - Waveglow 音频质量问题
- windows - 计划任务中的 exe 文件返回代码“2147516556”
- php - 如何保存 PHP-MIME-MAIL-PARSE 捕获的文件并通过命令读取 fopen?拉拉维尔
- git - 多位作者的 Git GPG 签名
- hadoop - HIVE:异常:向现有外部表添加新分区时分区已存在
- rest - 而是收到 ResourceAccessException HttpServerErrorException
- terraform - 等待 ECS 集群的 Terraform 错误