2009-05-05 41 views
0

我有一个节点对象指定的节点级别显示在一个TreeView

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

我想使用节点的有序列表来构建一个TreeView

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

继Boo之后,当您迈向更高层级时,您会希望保留一堆节点。如果当前节点上的级别较高,则将前一个节点推入堆栈并将其用作父级。如果级别低于前一个节点,则从堆栈中弹出n个节点(n = previous_level - current_level),并使用新的堆栈顶部作为父级。

0

循环在你的节​​点列表。从索引0开始,记录该节点的级别。在所有后续索引中检查最后记录的级别。如果更高,则将其添加为最后添加的节点的子节点。如果更低,那么..如果小写的问题..找到合适的节点来添加它。