BSTが正確に何に適しているかについて言及している回答はありません。
やりたいことが値によるルックアップだけである場合、ハッシュテーブルははるかに高速で、O(1) 挿入とルックアップ (償却された最良のケース) です。
BST は O(log N) ルックアップになります。ここで、N はツリー内のノードの数であり、挿入も O(log N) です。
RB および AVL ツリーは、このプロパティのために言及された別の回答のように重要です。プレーンな BST が順序どおりの値で作成された場合、ツリーは挿入された値の数と同じくらい高くなり、ルックアップのパフォーマンスが低下します。
RB ツリーと AVL ツリーの違いは、挿入または削除後のリバランスに必要なローテーションです。AVL ツリーはリバランスで O(log N) ですが、RB ツリーは O(1) です。この一定の複雑さの利点の例は、永続的なデータ ソースを保持している可能性がある場合です。ロールバックするために変更を追跡する必要がある場合は、AVL ツリーで O(log N) の可能な変更を追跡する必要があります。
ハッシュテーブルよりもツリーのコストを支払うことをいとわないのはなぜですか? 注文!ハッシュ テーブルには順序がありません。一方、BST は構造上、常に自然に順序付けられています。そのため、配列やその他のコンテナーに大量のデータを投げて、後で並べ替えることに気付いた場合は、BST がより良い解決策になる可能性があります。
ツリーの order プロパティは、順番、深さ優先、幅優先、前順、後順など、順序付けられた反復機能を多数提供します。これらの反復アルゴリズムは、調べたい場合にさまざまな状況で役立ちます。
レッド ブラック ツリーは、言語ライブラリ、C++ Set および Map、.NET SortedDictionary、Java TreeSet などのほぼすべての順序付きコンテナーで内部的に使用されます...
そのため、ツリーは非常に便利で、知らないうちに頻繁に使用している可能性があります。興味深いプログラミング演習として強くお勧めしますが、自分で作成する必要はほとんどないでしょう。