TrieNode クラス
Coddyの「トライ木 - データ構造シリーズ #8」コースのレッスン 3/14。
トライ(trie)の各ノードは、2つの情報を保持する1つの小さなオブジェクトです。それは、そこからぶら下がっているchildren(文字から次のノードへのマップ)と、ルートからこのノードまでのパスが挿入された完全な単語を綴っているかどうかを示すフラグisEndOfWordです。
これがクラスのすべてです。値もキーもありません。ツリー内でのノードの位置が、その意味そのものです。"cat"を挿入すると、ルートからc、a、tというラベルの付いたエッジのパスが、isEndOfWord = trueを設定するノードに到達します。
まずはこのTrieNodeクラスを作成することから始めましょう。次のレッスンのTrieクラスでこれを使用します。
チャレンジ
簡単引数を取らないコンストラクタを持つ TrieNode クラスを作成してください。
次の2つのフィールドを初期化します:
childrenを空のマップ(または、使用する言語における文字からノードへのマップに相当するもの)に設定します。isEndOfWordを false に設定します。
自分で試してみよう
#include <stdio.h>
#include "trienode.h"
int main() {
TrieNode* n = TrieNode_new();
printf("%s %s\n",
TrieNode_childrenCount(n) == 0 ? "true" : "false",
n->isEndOfWord ? "true" : "false");
return 0;
}