クラスTrieNode(オブジェクト): デフ __init__ (自己): "" " ここにあなたのデータ構造を初期化します 。""" self.data = {} self.is_word = Falseの クラストライ(オブジェクト): デフ __init__ (自己): self.root = TrieNode() DEF (自己、単語)を挿入は: "" " トライに単語を挿入します。 :タイプワード:STR :RTYPE:ボイド """ ノード = 自己。 根のための手紙で単語: 子 = node.data.get(文字) の場合 ではない子: node.data [文字] = TrieNode() ノード = node.data [文字] node.is_word = 真 デフ検索(自己、単語 ):""」 戻り値単語がトライしている場合。 :タイプの単語:STR :RTYPE:BOOL 「」」 ノード = self.root ための手紙で単語: ノード = node.data.get(手紙) もし ないノード: 返すFalseの リターンを node.is_word #判断单词是否是完整的存在在トライ树中 DEF :starts_with(自己、接頭辞) 「」」 トライで任意の単語がある場合は戻り値 指定された接頭辞で始まります。 :タイプの接頭辞:STR :RTYPE:BOOL 「」」 ノード = self.root ための手紙で接頭辞: ノード = node.data.get(文字) の場合 ではないノード: 返す偽 返す真の デフget_start(自己、接頭辞): "" " 言葉は接頭辞で始まっ返します :PARAM接頭辞: :リターン:ワード(リスト )""" デフ_get_key(前、pre_node): words_list = [] の場合pre_node.is_word: words_listを.append(PRE) のために X でpre_node.data.keys(): words_list.extend(_get_key(プリ +のSTR(x)は、pre_node.data.get(X))) を返すwords_list 単語を = [] なりません self.starts_with(接頭辞): 戻り語 ならself.search(接頭辞): words.append(接頭辞) リターン単語 ノード = self.root ための文字で接頭辞: ノード = node.data.get(文字) 戻り_get_key(接頭辞、ノード) #あなたのトライオブジェクトのようなインスタンス化と呼ばれます: トライ= トライ() trie.insert(" somestring " ) trie.insert(" 誰か" ) (trie.insert" somebody1 " ) trie.insert(" somebody3 " ) プリント(trie.search(" キー" )) プリント(trie.search(" somebody3 " )) プリント(trie.get_start(' いくつかの'))