我有什么应该是一个相当无足轻重的问题,但我想确保我在.Net 4.5中以最“优雅”的方式做到这一点,我想一些比我更聪明的人的意见。通用树结构 - 如何填充组织结构图
我有一个类,它表示一个通用的树结构,例如:
public class TreeNode<T>
{
List<TreeNode<T>> Children;
T Item {get;set;}
public TreeNode (T item)
{
Item = item;
}
public TreeNode<T> AddChild(T item)
{
TreeNode<T> nodeItem = new TreeNode<T>(item);
Children.Add(nodeItem);
return nodeItem;
}
}
现在,我代表该组织的雇员一个Person类。每个Person
对象都有一个指向其上级的ID
和BossID
。
多位员工可以拥有相同的老板,因此我试图用此树结构创建组织结构图。
顶部节点将是Person
对象,其中BossID
为空(它是一个int?
)。我可以快速获得LINQ。
这是下一步令我困惑的一点。有多种方法,但对我来说似乎有点草率,我知道必须有一种更容易/更优雅的方式来填充组织结构图的其余部分。
所以现在我有一个通用对象List<Person>
持有所有员工,其各种BossID
和这个通用的树结构,我可以添加子节点。
这都是非常基本的,但是填充树的正确顺序是什么?我递归地应该迭代线?我知道这里涉及回溯,这是我陷入困境的地方。
我很抱歉,我的背景不在计算机科学,如果是我意识到树结构,链表和其他一切都是微不足道的东西。但这是我第一次尝试,我想看看它是如何正确完成的。
我很欣赏任何指导。
所以基本上你的问题是如何创建组织树,因为你有人的名单? –
就这么简单。我有那个泛型树类,我有一个List对象,它们有自己的ID和老板的ID。我只想知道4.5下最干净的方法是什么。我知道我可以查找如何填充一棵树,但有一些非常差的例子,只是寻找输入。我已经在这里看到了一些惊人的魔力,特别是像LINQ这样的事情,这些都极大地简化了我的代码。 – Patrick