代码之家  ›  专栏  ›  技术社区  ›  gunnerz

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

  •  14
  • gunnerz  · 技术社区  · 14 年前

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

    LinkedList 仅提供将一个节点添加到另一个节点(如果我理解正确的话)。

    我看过C5 treeset 收藏,但似乎没有 Add() 方法将两个以上的节点添加到一个节点。

    我也看过 Treeview 类,但我不想添加Windows窗体 动态链接库 因为我正在构建一个服务层应用程序。(还是还好?)

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

    有什么建议吗?

    谢谢

    1 回复  |  直到 14 年前
        1
  •  34
  •   Alberto cellik    8 年前

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

    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");