查找最深子树节点的级别

发布于 12-18 08:33 字数 317 浏览 6 评论 0原文

我有树节点 &我想找到树节点中最深的孩子。 如果有 2 个 level 11 的子节点 & level 13 分别然后我需要函数返回值 13。

我该怎么做?

public int FindLevel(TreeNode oParentNode)
{
   counter++;
  forech(TreeNode oSubNode in oParentNode.Nodes)
  {
    FindLevel(oParentNode);
  }

 return Counter;
}

I have treenode & i would like to find the deepest child in the treenode.
if there are 2 child nodes with level 11 & level 13 respectively then i need unction to return me the value 13.

How can i do that ?

public int FindLevel(TreeNode oParentNode)
{
   counter++;
  forech(TreeNode oSubNode in oParentNode.Nodes)
  {
    FindLevel(oParentNode);
  }

 return Counter;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

这是我给你的建议:

private int GetDeepestChildNodeLevel(TreeNode node)
{
    var subLevel = node.Nodes.Cast<TreeNode>().Select(GetDeepestChildNodeLevel);
    return subLevel.Count() == 0 ? 1 : subLevel.Max() + 1;
}

这里使用显式类型:

private int GetDeepestChildNodeLevel(TreeNode node)
{
    var subLevel = node.Nodes.Cast<TreeNode>().Select<TreeNode, int>(subNode => GetDeepestChildNodeLevel(subNode));
    return subLevel.Count<int>() == 0 ? 1 : subLevel.Max() + 1;
}

Here is my suggestion for you:

private int GetDeepestChildNodeLevel(TreeNode node)
{
    var subLevel = node.Nodes.Cast<TreeNode>().Select(GetDeepestChildNodeLevel);
    return subLevel.Count() == 0 ? 1 : subLevel.Max() + 1;
}

here with explicit types:

private int GetDeepestChildNodeLevel(TreeNode node)
{
    var subLevel = node.Nodes.Cast<TreeNode>().Select<TreeNode, int>(subNode => GetDeepestChildNodeLevel(subNode));
    return subLevel.Count<int>() == 0 ? 1 : subLevel.Max() + 1;
}
最笨的告白2024-12-25 08:33:05

下面是 TreeView 的扩展方法,它返回该 TreeView 中最深节点的 Level

public int GetDeepestNodeLevel(this System.Windows.Forms.TreeView treeView)
{
    int level = -1;
    foreach (System.Windows.Forms.TreeNode node in treeView.Nodes) {
        int deep = DigInNodes(node);
        if (deep > level)
            level = deep;
    }
    return level;
}
private int DigInNodes(System.Windows.Forms.TreeNode node)
{
    int level = node.Level;
    foreach (System.Windows.Forms.TreeNode subnode in node.Nodes) {
        int deep = DigInNodes(subnode);
        if (deep > level)
            level = deep;
    }
    return level;
}

代码经过测试并且适合我。

Here's the extension method for TreeView that returns Level of the deepest node in that TreeView.

public int GetDeepestNodeLevel(this System.Windows.Forms.TreeView treeView)
{
    int level = -1;
    foreach (System.Windows.Forms.TreeNode node in treeView.Nodes) {
        int deep = DigInNodes(node);
        if (deep > level)
            level = deep;
    }
    return level;
}
private int DigInNodes(System.Windows.Forms.TreeNode node)
{
    int level = node.Level;
    foreach (System.Windows.Forms.TreeNode subnode in node.Nodes) {
        int deep = DigInNodes(subnode);
        if (deep > level)
            level = deep;
    }
    return level;
}

Code is tested and works for me.

泪是无色的血2024-12-25 08:33:05

这是获得所选节点级别深度的快速方法。

 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    {
        TreeNode node = treeView1.SelectedNode;
        MessageBox.Show(string.Format("You selected: {0}{1}", node.Text,e.Node.Level));

    }

This is the fast way to get level´s deep of selected node.

 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    {
        TreeNode node = treeView1.SelectedNode;
        MessageBox.Show(string.Format("You selected: {0}{1}", node.Text,e.Node.Level));

    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文