首页 > 解决方案 > 显示节点数和树的深度 C#

问题描述

我将节点放在 Visual Studio 的 Treeview 中。我想计算树节点和树的深度:

在此处输入图像描述

标签: 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。


推荐阅读