我有一个节点对象,它指定节点级别
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},
};
最有效的方法是什么。
由于
罗汉
答案 0 :(得分:0)
循环遍历节点列表。从索引0开始,记录该节点的级别。在所有后续索引中,根据最后记录的级别检查级别。如果更高,请将其添加为最后添加的节点的子节点。如果较低,那么..如果小案例问题..找到适当的节点将其添加到。
答案 1 :(得分:0)
继续从Boo开始,当你迈向更高级别时,你会想要保留一堆节点。如果当前节点上的级别较高,则将前一个节点推送到堆栈并将其用作父节点。如果级别低于上一个节点,则从堆栈中弹出n个节点(n = previous_level - current_level)并使用新的stack-top作为父级。