Menu
Coddy logo textTech

Trieとは?

Coddyの「トライ木 - データ構造シリーズ #8」コースのレッスン 2/14。

トライ("try"と発音し、retrievalの略)は、文字列を文字ごとに格納し、検索するために構築されたツリー状のデータ構造です。ツリー内のすべてのエッジには1つの文字がラベル付けされており、ルートからマークされたノードまでのすべてのパスは、格納された1つの単語を綴ります。

この構造により、接頭辞(プレフィックス)に関する問い合わせが非常に高速になります。トライに"car"で始まる単語が含まれているかどうかを確認するには、何万もの単語が格納されていても、ルートからわずか3文字のルックアップを行うだけです。トライは、オートコンプリート、スペルチェック、IPルーティングテーブルなどの機能の背後にあるエンジンです。

トライの各ノードは、2つの状態を保持します:

  • children:文字から次のTrieNodeへのマップ。
  • isEndOfWord:ルートからこのノードまでのパスが、挿入された完全な単語を綴っている場合にtrueとなるフラグ。

 

トライにおける5つの主な操作は以下の通りです:

  1. Insert(挿入):単語を追加し、途中で不足しているノードを作成します。
  2. Search(検索):完全な単語が格納されているかどうかを確認します。
  3. StartsWith(前方一致検索):格納されている単語の中に、指定された接頭辞で始まるものがあるか確認します。
  4. Delete(削除):単語を削除し、不要なブランチを整理(プルーン)します。
  5. WordCount(単語数カウント):格納されている一意の単語の数を数えます。

 

それでは、Trieクラスを作成しましょう!

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

トライ木 - データ構造シリーズ #8のすべてのレッスン