San*_*ile 4 c# recursion treenode winforms
我有treenode,我想在treenode找到最深的孩子.如果有2个带有level 11&的子节点,level 13那么我需要将函数返回给我13.
我怎样才能做到这一点 ?
public int FindLevel(TreeNode oParentNode)
{
counter++;
forech(TreeNode oSubNode in oParentNode.Nodes)
{
FindLevel(oParentNode);
}
return Counter;
}
Run Code Online (Sandbox Code Playgroud)
以下是我对你的建议:
private int GetDeepestChildNodeLevel(TreeNode node)
{
var subLevel = node.Nodes.Cast<TreeNode>().Select(GetDeepestChildNodeLevel);
return subLevel.Count() == 0 ? 1 : subLevel.Max() + 1;
}
Run Code Online (Sandbox Code Playgroud)
这里有明确的类型:
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;
}
Run Code Online (Sandbox Code Playgroud)