gpt4 book ai didi

c# - 我可以使用什么算法在 C# 中对这个分支列表进行排序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:15 25 4
gpt4 key购买 nike

我正在尝试创建一个有序的类别分支列表,这样我就可以找到任何子类别并在开头添加 "-";以及该类别可能具有的任何子类别,并添加 "--" 等。

我的测试类属性如下所示:

    public int Id { get; set; }
public int OrderInList { get; set; }
public int ParentId { get; set; }
public IList<TestCategories> Subcategories { get; set; }

示例:

Books
-Special Offers
--Fiction
-eBooks
--Pdf
--Mobi
Maps
-United Kingdom
--Cumbria
--West Yorkshire

我有一个默认的根级别类别,Id: 1ParentId: 1OrderInList: 1
所以上面的顺序看起来像这样:

Id   | ParentId  |  OrderInList   
2 1 1 //Books
3 2 1 //-Special Offers
4 3 1 //--Fiction
5 2 2 //-eBooks
6 5 1 //--Pdf
7 5 2 //--Mobi
8 1 2 //Maps
9 8 1 //-United Kingdom
10 9 1 //--Cumbria
11 9 2 //--West Yorkshire

如何对完全无序列表进行排序以使其看起来像上面的内容?

最佳答案

这种排序叫做Topological Sorting .对列表进行拓扑排序的最简单方法是使用深度优先递归搜索:您离开节点的顺序是反向拓扑。如果您需要知道树中节点的深度,以便知道在名称前面放置多少个破折号,则可以将 int level 变量添加到深度优先递归方法中。

你可以从Rosetta Code借用一个实现- 它没有用 C# 编写的,但用 Java 编写的应该很容易翻译。

关于c# - 我可以使用什么算法在 C# 中对这个分支列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11953507/

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