存储树结构的集合是什么?

时间:2012-08-08 15:40:44

标签: c# collections tree

我想将组织结构图存储在集合中。我认为树数据结构最适合我的需要,因为我需要在一个节点上添加多个节点。

LinkedList只提供一个节点添加到另一个节点,如果我理解正确的话。

我查看了C5 treeset集合,但似乎没有Add()方法向一个节点添加2个以上的节点。

我还查看了Windows窗体库中的Treeview类,但我不想将Windows窗体 dll 添加到我的项目中,因为我正在构建服务层应用程序。 (或者没事?)

我不想编写我自己的树集合类,如果已经有第三方提供的那个?

有什么建议吗?

由于

1 个答案:

答案 0 :(得分:26)

这样的事情可以作为一个起点。通过使用泛型,这个可以容纳任何树

class TreeNode<T>
{
    List<TreeNode<T>> Children = new List<TreeNode<T>>();

    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;
    }
}

持有字符串树的样本

string root = "root";
TreeNode<string> myTreeRoot = new TreeNode<string>(root);
var first = myTreeRoot.AddChild("first child");
var second = myTreeRoot.AddChild("second child");
var grandChild = first.AddChild("first child's child");