ツリー構造を表示したい。ユーザー/ツリーに、子供や子孫を追加できる「RootUnit」のような定義済みのハードコードされたルート ノードを本当に与える必要がありますか?
これは理にかなっていますか、それともノードを追加するときにのみ問題を引き起こしますか?
ルートが 2 つある場合、ツリーは 2 つになります。
ツリーにはルートが1つだけある必要があります。ただし、ルートをハードコーディングする必要はありません。最初に作成されたツリーノードをルートとして扱うだけです。
定義上、ツリーにはルートが 1 つしかなく、すべての子ノードには親が 1 つだけあります (親を持たないルートを除く)。これらの制限が満たされない場合、ツリーはツリーではなくグラフになります (有向かどうかに関係なく)。
それは文脈に依存します。厳密な数学的定義から、ツリーに対して複数のルート ノードを持つことはできません。ただし、それを無視し、とにかく複数の最上位ノードを持つツリーの実装がいくつかあります(TreeView
この質問にタグを付けたコントロールなど)。特定のプログラムが複数の最上位ノードを使用することでより良くなるか、または悪くなるかを自問する必要があります。私たちはあなたのプログラムについて他に何も知らないので、私たちが本当にあなたのために下すことができる決定ではありません.
すべてのノードに同じコンストラクターを使用するのではなく、ルートノードに使用されるデフォルトのコンストラクターとその他すべてに使用されるコンストラクターを提供します。それは醜いものではなく、機能します。
public Node()
{
// Set properties if you'd like.
// such as having no children yet or whatnot.
}
public Node(Node parent)
{
// Similar to Node()
}
見る!素敵できれい。