1. ホーム
  2. c#

[解決済み] なぜ.NETにはTree<T>クラスがないのですか?

2023-03-28 09:07:41

疑問点

.NETの基本クラスライブラリには、コレクションのための優れたデータ構造(リスト、キュー、スタック、辞書)がありますが、奇妙なことにバイナリツリーのためのデータ構造は含まれていません。これは、異なるトラバーサルパスを利用するものなど、特定のアルゴリズムにとってひどく有用な構造です。私は、正しく書かれた、自由な実装を探しています。

私は単に盲目で、それを見つけていないのでしょうか...それは BCL のどこかに埋もれているのでしょうか? もしそうでなければ、バイナリ ツリー用のフリーまたはオープン ソースの C#/.NET ライブラリを誰か推奨していただけないでしょうか。できれば、ジェネリックスを採用したものが望ましいです。

EDITです。 私が探しているものを明確にするために。私は、内部的にツリーを使用する順序付き辞書コレクションに興味があるわけではありません。サブツリーを抽出したり、ノードのポストフィックス・トラバーサルを実行したりできるように、その構造を公開するものです。理想的には、そのようなクラスは、特殊なツリー (たとえば、赤/黒、AVL、バランスなど) の動作を提供するように拡張することができます。

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

おっしゃるとおり、BCL には何もありません。これは、ツリーを使用するかどうかの選択は、通常、実装の詳細であり、そうでなければデータにアクセスするための型破りな方法であるためだと思われます。つまり、quot;binary-search-for element #37" とは言わずに、quot;get me element #37" と言うわけです。

しかし、あなたは C5 ? これは超便利で、いくつかのツリーの実装があります ( 1 , 2 , 3 ).