13

組織図をコレクションに保存したい。1 つのノードに複数のノードを追加する必要があるため、ツリー データ構造が私のニーズに最も適していると思います。

LinkedList私が正しく理解している場合、あるノードを別のノードに追加することのみを提供します。

C5 コレクションを見てきましたが、1 つのノードに 2 つ以上のノードを追加する方法treesetがないようです。Add()

Windows フォーム ライブラリのクラスも調べましたが、サービス レイヤー アプリケーションを構築しているため、プロジェクトにWindows フォームdllTreeviewを追加したくありません。(それとも大丈夫?)

サード パーティによって提供されているツリー コレクション クラスが既にある場合、独自のツリー コレクション クラスを作成したくありませんか?

何か提案はありますか?

ありがとう

4

1 に答える 1

31

このようなものが出発点になる可能性があります。ジェネリックを使用することで、これは何でもツリーを保持できます

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");
于 2012-08-09T08:09:28.577 に答える