私はradixツリー(文字列/ char配列用)の実装に取り組んできましたが、特定のツリーノードの子であるツリーノードをどのように格納するかを考えています。Radixツリーノード
私は、Trieの(幾分基数の木に似ています)、おそらくいくつかの基数のツリー(これは最後にこのトピックを研究してからしばらくありました)で使用されているリンクリストの実装を見ましたが、あなたが多くの共通の接頭辞を含む一連のデータを持っている場合は特に不十分です。
もう1つのデータ構造(バイナリ検索ツリーなど)を使用することをおすすめします。多数の共通接頭辞を持つデータがある場合、単純なリンクリスト(O(log(n))
対対O(n)
)よりも大幅な速度向上が見られると思いますが、他の場所ではパフォーマンスにかなりの妥協が見られますか?
特に、共通接頭辞が多数ある場合、またはバイナリ検索ツリーでリンクリストを選択する可能性のあるその他の障害がある場合が心配です。
また、子ノードを格納するために、より良い(つまり、より高速なメモリを使用する)方法がありますか?
私はカートトライの説明をどこで見つけることができるのか、それ以外のものは何ですか? – helloworld922
kart-trieのphp実装はphpclasses.org(kart-trie)からダウンロードできます。 – Bytemain