递归搜索嵌套列表

本文关键字:列表 嵌套 搜索 递归 | 更新日期: 2023-09-27 18:01:00

我已经阅读并搜索过了,还没有找到这个相对简单的问题的答案。

我有一门课:

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

它使用一系列在本文中并不重要的函数来填充,但我正在寻找一种方法来搜索列表中的所有子项,搜索特定的"name"值,如果找到,则返回该列表。

如何以最简单的方式实现这一点,同时对性能的影响最小?谢谢——我已经在这一点上被难住了好几天了。。。

递归搜索嵌套列表

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;
    }
}