ハッシュバイナリツリー

 

 

私たちは、セクションは、ハッシュテーブルに挿入、削除、検索操作は非常に効率的で、一定の時間計算量クラスO(1)を行うことができることをハッシュテーブルについて話しました。何の利点が存在しないかのように二分探索よりバランスのとれた状況にある木、挿入、削除、動作時間の複雑さを検索するには、なぜ我々は、バイナリ検索ツリーにそれを使用する必要があり、ハッシュテーブルに対するO(LOGN)、ですか?

私はいくつかの理由があると思います。

まず、ハッシュテーブル内のデータが障害に格納され、出力データであることを注文した場合、あなたはソートする必要があります。二分探索木のために、我々はトラバーサルINORDERのみ必要、O(n)との時間複雑内とすることができる、出力データシーケンスは、注文しました。

第二に、多くのことを消費するハッシュテーブルの拡張が、時に二分探索木不安定なパフォーマンスにもかかわらず、ハッシュ衝突、不安定なパフォーマンスに直面したが、プロジェクトでは、最も一般的に使用される性能をバランス二分探索木は非常にあります安定し、安定した時点での複雑O(LOGN)。

第三には、一般的に、ハッシュテーブルの検索およびその他の操作の時間計算量にもかかわらず、一定であるが、ハッシュの衝突があるため、これは必ずしもLOGNより一定で小さくないので、実際の検索速度できる必ずしも良好Oより(LOGN)速いです。プラス時間のかかるハッシュ関数、バランスの取れたバイナリ効率よりも必ずしも高い探索木。

第四に、バイナリツリー、考慮すべき多くのことよりも複雑なハッシュテーブルルックの構造。例えば、ハッシュ関数の設計、競合解決、容量拡張、容量減少など。固定、平衡二分探索木は、この問題のバランスを考慮する必要があり、この問題を解決するには、比較的成熟しています。

最後に、あまりにも多くのハッシュ衝突のを避けるために、ハッシュテーブルの負荷率がオープンアドレシングハッシュテーブルに基づいて、特に競合解消方法では、あまりにも多くのことができない、またはあなたには、いくつかのストレージスペースを無駄にします。

両者の間に競合がないように、ハッシュテーブルに優れたいくつかの点で、これらの点、平衡二分探索木を取ります。私たちは、実際の開発プロセスでは、使用するかを選択するために、特定のニーズの組み合わせを必要とします。

 

おすすめ

転載: www.cnblogs.com/yuanjiangw/p/11967736.html