c# - 用什么集合来存储树结构?

标签 c# collections tree

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

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

我查看了 C5 treeset 集合,但它似乎没有 Add() 方法可以将超过 2 个节点添加到一个节点。

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

我不想编写自己的树集合类,如果第 3 方已经提供了一个?

有什么建议吗?

谢谢

最佳答案

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

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

关于c# - 用什么集合来存储树结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11868192/

相关文章:

c - 如何使用fork()创建这个进程树?

data-structures - BST,寻找下一个最高节点

c# - C# 类定义的语法

c# - int 字段的默认值为 0 吗?

c# - 在 View 中声明函数或方法

Java集合搜索

java - 使用 collections.sort() 方法对字符串进行排序

c++ - 如何找到二叉树中两个给定节点之间的路径

c# - 如何在 Visual Studio C# 中获取资源的 URL?

java - 在Java中同时实现Map和List接口(interface)?