递归搜索嵌套列表

HeW*_*Was 3 c# recursion list

我已经阅读和搜索了,我还没有想出这个相对简单的问题的答案.

我有一节课:

public class AccessibleTreeItem
{
    public string name;
    public List<AccessibleTreeItem> children;

    public AccessibleTreeItem()
    {
        children = new List<AccessibleTreeItem>();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是使用一系列在这种情况下并不重要的函数填充的,但我正在寻找的是一种搜索列表中所有子项,搜索特定"名称"值的方法,以及如果找到,则返回该List.

如何以最简单的方式实现这一目标,性能最低?谢谢 - 我已经被困在这几天了......

Pet*_*nov 14

public class AccessibleTreeItem
{
    public string name;
    public List<AccessibleTreeItem> children;

    public AccessibleTreeItem()
    {
        children = new List<AccessibleTreeItem>();
    }

    public static AccessibleTreeItem Find(AccessibleTreeItem node, string name)
    {

        if (node == null)
            return null;

        if (node.name == name)
            return node;

        foreach (var child in node.children)
        {
            var found = Find(child, name);
            if (found != null)
                return found;
        }

        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)