タグ付けされた質問 「binary-tree」

6
どの自己バランス型バイナリツリーをお勧めしますか?
私はHaskellを学び、演習としてバイナリツリーを作成しています。通常の二分木を作成したので、それを自己均衡化に適応させたいと思います。そう: どちらが最も効率的ですか? どちらが最も簡単に実装できますか? 最もよく使用されるのはどれですか? しかし、決定的に、どちらをお勧めしますか? これは議論の余地があるため、ここに属していると思います。

3
二分木の事前および事後順序走査の有用性
これは非常に単純かもしれませんが、すべてのトラバーサルタイプのバイナリツリー(プレーン、ソート、バランス)のコンテキストだと思いました。 深さ優先予約 深さ優先順 深さ優先順 幅優先 事前注文と事後注文の実際の有用性は何ですか?つまり、事前順序および/または事後順序のトラバーサルが他の2つよりも(いくつかの)利点をもたらすバイナリツリーのタイプおよび/または構成がありますか? AFAICS、特定のタイプとバイナリツリーの構成があります。これらに対して、順序と幅優先が特定の利点をもたらす可能性があります。 バランスの取れたバイナリツリーの場合、深さ優先のトラバースは幅優先と比較して使用するメモリストレージスペースが少なくなります(たとえば、6または7ノードのバランスの取れたバイナリツリーでは、高さが2であるため、深さ優先のトラバーサルは最大で任意の時点で2つのノード、最後のレベルには3つまたは4つのノードがあるため、幅優先スキャンでは、ある時点で最大3つまたは4つのノードを格納する必要があります。この場合、インオーダートラバーサルを使用すると、メモリの使用量が最小になり、ノードを自然な順序で訪問します。 バランスの取れていない二分木の場合、最悪の挿入シナリオに近い場合、幅優先で走査すると、深さ優先の走査に比べて使用するメモリが少なくなります。したがって、この場合、幅優先の方が有利です。順序通りのトラバーサルには、値を自然な順序で訪問するという利点があります。 ただし、トラバース前後が他の2つよりも有利になる状況は考えられません。

3
バイナリツリーは、階層データを格納する特定の目的に役立ちますか?それらの標準的な使用は何ですか?
バイナリツリーの構造と、それらのトラバース方法を理解しています。しかし、私はそれらの実際の使用法、プログラムとプログラミングの目的を実現するのに苦労しています。階層データの「実際の」例について考えると、ほぼ確実に2つ以上の子があります。たとえば、家系図では、母親には2人以上の子供がいることがよくあります。 「バイナリツリー」は、配列とリストの処理時間が高速であるため、線形関連データの保存にのみ有効ですか?または、階層データを保存する特定の目的に役立ちますか?もしそうなら、二分木の適用の例は何ですか。ノードに最大 2つの子があるようなデータは何ですか?


2
個別の連鎖にバイナリ検索ツリーを使用してハッシュテーブルを高速化することは可能ですか?
バイナリ検索ツリーを使用してハッシュテーブルを実装し、O(n)(リンクリストを使用)からO(log n)(BSTを使用)への個別チェーンプロセスの検索の複雑さを軽減します。これを行うことはできますか?ソリューションが段階的なロジックの実装であれば、理解しやすくなります。 ハッシュテーブル(個別のチェーンを使用してビルド)の検索時間を短縮したいのですが、同時に挿入時間を増やしたくありません。私のプロジェクトでは、ハッシュ関数を変更して衝突を減らすことはできません。しかし、スケーラビリティのために、衝突が発生しています。私は回避策を見つけようとしていますので、衝突が発生した場合に何らかの方法で最高のアクセスと時間を挿入できるようにしています...つまり、アルゴリズム全体を再構築するよりも物の現在の状態を管理します。パンアウトしない場合は、再構築する必要があります。アイデアはありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.