1. ホーム
  2. c#

[解決済み】C#のツリーデータ構造

2022-04-01 10:33:39

質問

C#でツリーやグラフのデータ構造を探していたのですが、提供されていないのでしょうか? C#2.0によるデータ構造の徹底的な検証 の理由を少し教えてください。 この機能を提供するためによく使われる便利なライブラリはないのでしょうか? おそらく 戦略パターン で紹介されている問題を解決するために、この記事で紹介されている

自分のArrayListを実装するのと同じように、自分のツリーを実装するのは少し馬鹿らしい気がします。

私はただ、バランスを崩すことができる一般的なツリーが欲しいだけなのです。 ディレクトリツリーを思い浮かべてください。 C5 が、そのツリー構造は、ノードの階層を表現するよりも検索に適したバランスのとれた赤黒いツリーとして実装されているようです。

どのように解決するのか?

なぜなら、ツリー構造にはさまざまな実装方法があり、1つのソリューションですべてのベースをカバーすることは不可能だからです。 解決策が具体的であればあるほど、それがどのような問題にも適用できる可能性は低くなります。 LinkedListに至っては、循環リンクリストが必要な場合はどうすればいいんだ?

実装する必要がある基本的な構造はノードのコレクションになりますが、ここではそのためのオプションを紹介します。 ここでは、Nodeクラスがソリューション全体のベースクラスであると仮定します。

ツリーの下方向への移動のみが必要な場合、Node クラスには子のリストが必要です。

ツリーを上に移動する必要がある場合は、Node クラスに親ノードへのリンクが必要です。

AddChildメソッドを構築し、これら2つのポイントや、実装が必要なその他のビジネスロジック(子の制限、子のソートなど)をすべて引き受けます。