gpt4 book ai didi

c# - 使用对象列表构建树

转载 作者:太空狗 更新时间:2023-10-29 22:55:54 24 4
gpt4 key购买 nike

我有一个包含属性 id 和 parent_id 的对象列表。
我想建一棵树来连接那些 child 和 parent 。
1 个 parent 可能有多个 child ,并且有一个对象将成为所有对象的祖先。

实现它最快的算法是什么?
我使用 C# 作为编程语言,但其他语言也可以。

最佳答案

类似的东西应该可以解决问题:

public List<Node> MakeTreeFromFlatList(IEnumerable<Node> flatList)
{
var dic = flatList.ToDictionary(n => n.Id, n => n);
var rootNodes = new List<Node>();
foreach(var node in flatList)
{
if (node.ParentId.HasValue)
{
Node parent = dic[node.ParentId.Value];
node.Parent = parent;
parent.Children.Add(node);
}
else
{
rootNodes.Add(node);
}
}
return rootNodes;
}

(假设 ParentId 是 Nullable<int> ,对于根节点为 null)

关于c# - 使用对象列表构建树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2378346/

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