Trie
各ノードが単語を表すデータ構造を開発しています。したがって、単語st
、stack
、stackoverflow
およびoverflow
は次のように配置されます。
root
--st
---stack
-----stackoverflow
--overflow
My Trie はHashTable
内部的に を使用しているため、すべてのノード ルックアップに一定の時間がかかります。以下は、アイテムをトライに挿入するために思いついたアルゴリズムです。
- トライでアイテムの存在を確認します。存在する場合は戻り、存在しない場合はステップ 2 に進みます。
- の各文字を繰り返し
key
、単語の存在を確認します。新しい値を子として追加できるノードを取得するまで、これを行います。ノードが見つからない場合は、ルート ノードの下に追加されます。 - 挿入後、新しいノードが挿入されたノードの兄弟を再配置します。これにより、すべての兄弟がウォークスルーされ、新しく挿入されたノードと比較されます。いずれかのノードが新しいノードと同じ文字で始まる場合、そこから移動され、新しいノードの子として追加されます。
これがトライを実装する正しい方法かどうかはわかりません。提案や改善は大歓迎です。
使用言語:C++