Какая коллекция хранит древовидную структуру?

Я хочу сохранить организационную диаграмму в коллекции. Я думаю, что структура данных дерева лучше всего подходит для моих потребностей, так как мне нужно добавить несколько узлов к одному node.

LinkedList только добавляет один node к другому node, если я его правильно понимаю.

Я просмотрел коллекцию C5 treeset, но, похоже, не имеет метода Add() для добавления более двух узлов в один node.

Я также посмотрел класс Treeview из библиотеки Windows Forms, но я не хочу добавлять DLL файлы Windows в свой проект, так как я создаю приложение уровня сервиса. (или это хорошо?)

Я не хочу писать свой собственный набор коллекций деревьев, если уже есть сторонний сторонник?

Любое предложение пожалуйста?

Спасибо

Ответ 1

Что-то вроде этого может быть отправной точкой. При использовании дженериков это может содержать дерево чего-либо

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

Образец, который содержит дерево строк

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