3

ツリー構造を表示したい。ユーザー/ツリーに、子供や子孫を追加できる「RootUnit」のような定義済みのハードコードされたルート ノードを本当に与える必要がありますか?

これは理にかなっていますか、それともノードを追加するときにのみ問題を引き起こしますか?

4

5 に答える 5

5

ルートが 2 つある場合、ツリーは 2 つになります。

于 2012-07-06T16:52:36.600 に答える
2

ツリーにはルートが1つだけある必要があります。ただし、ルートをハードコーディングする必要はありません。最初に作成されたツリーノードをルートとして扱うだけです。

于 2012-07-06T16:50:42.407 に答える
2

定義上、ツリーにはルートが 1 つしかなく、すべての子ノードには親が 1 つだけあります (親を持たないルートを除く)。これらの制限が満たされない場合、ツリーはツリーではなくグラフになります (有向かどうかに関係なく)。

于 2012-07-06T17:01:43.507 に答える
2

それは文脈に依存します。厳密な数学的定義から、ツリーに対して複数のルート ノードを持つことはできません。ただし、それを無視し、とにかく複数の最上位ノードを持つツリーの実装がいくつかあります(TreeViewこの質問にタグを付けたコントロールなど)。特定のプログラムが複数の最上位ノードを使用することでより良くなるか、または悪くなるかを自問する必要があります。私たちはあなたのプログラムについて他に何も知らないので、私たちが本当にあなたのために下すことができる決定ではありません.

于 2012-07-06T17:03:36.550 に答える
1

すべてのノードに同じコンストラクターを使用するのではなく、ルートノードに使用されるデフォルトのコンストラクターとその他すべてに使用されるコンストラクターを提供します。それは醜いものではなく、機能します。

public Node()
{
  // Set properties if you'd like.
  // such as having no children yet or whatnot.
}

public Node(Node parent)
{
  // Similar to Node()
}

見る!素敵できれい。

于 2012-07-06T16:56:01.640 に答える