递归搜索嵌套列表

时间:2011-07-02 09:29:18

标签: c# list recursion

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

我有一个班级:

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

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

使用一系列在此上下文中并不重要的函数进行填充,但我正在寻找的是一种搜索列表中所有子项,搜索特定“名称”的方法value,如果找到,则返回该List。

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

1 个答案:

答案 0 :(得分: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;
    }
}