我有一个节点对象,它指定节点级别

public class Node
{
    public int Level { get; set; }
}

我想使用有序的节点列表来构建树视图

var nodes = new[]
{
    new Node(){Level = 0},
        new Node(){Level = 1},
        new Node(){Level = 1},
        new Node(){Level = 1},
            new Node(){Level = 2},
        new Node(){Level = 1},
            new Node(){Level = 2},
            new Node(){Level = 2},
                new Node(){Level = 3},
};

最有效的方法是什么。

由于

罗汉

有帮助吗?

解决方案

继续从Boo开始,当你迈向更高级别时,你会想要保留一堆节点。如果当前节点上的级别较高,则将前一个节点推送到堆栈并将其用作父节点。如果级别低于上一个节点,则从堆栈中弹出n个节点(n = previous_level - current_level)并使用新的stack-top作为父级。

其他提示

循环遍历节点列表。从索引0开始,记录该节点的级别。在所有后续索引中,根据最后记录的级别检查级别。如果更高,请将其添加为最后添加的节点的子节点。如果较低,那么..如果小案例问题..找到适当的节点将其添加到。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top