gpt4 book ai didi

c# - 如何在层次结构中查找根元素

转载 作者:行者123 更新时间:2023-11-30 17:48:14 26 4
gpt4 key购买 nike

我有这种情况:

具有“Children”属性的对象,它是一个相同类型的列表。结构的深度未知。这是对象的样子:

public class CustomType
{
public Guid ID { get; set; }
public string Name { get; set; }
public List<CustomType> Children { get; set; }
}

现在我想搜索一个特定的名称,如果我找到了一个匹配这个名称的元素,我想知道它是根元素。例如:

  • 根元素
    • 任何元素
      • 任何元素
        • 创建元素

我已经有了 FoundElement,但我想知道它是顶级父元素。我希望我的问题是可以理解的。主要问题是对象中不存在父链接...

这么久克里斯

最佳答案

正如您所说,理想的情况是在类上有一个 Parent 属性。但是,如果不需要它,您的方法应该是检查所有候选根节点的所有后代。这可以像这样递归地完成:

private bool HasDescendent(CustomType parent, CustomType descendent)
{
if(parent.Children.Contains(descendent))
return true;
return parent.Children.Any(child => HasDescendent(child, descendent);
}

private CustomType FindRoot(IEnumerable<CustomType> candidateRoots, CustomType node)
{
return candidateRoots.First(root => HasDescendent(root, node));
}

关于c# - 如何在层次结构中查找根元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23368134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com