プレフィックスクエリ:クエリ指定された文字列の接頭辞単語辞書の木があるかどうか!
mport java.util.TreeMapの; パブリッククラストライ{ プライベートクラスノード{ パブリックブールisWord。 公共のTreeMap <文字、ノード>次。 パブリック・ノード(ブールisWord){ this.isWord = isWord。 次のTreeMap = <>()新規。 } パブリック・ノード(){ この(偽)。 } } プライベート・ノードのルート。 プライベートint型のサイズ。 パブリックトライ(){ ルート=新しいノード()。 サイズ= 0。 } //获得トライ中存储的单词数量 公共INTのgetSize(){ 戻りサイズ; } //ワードトライに新しい単語を追加します 公共ボイド追加(文字列の単語){ ノードCUR =ルート。 用(INT iは= 0; I <word.length(); I ++){ チャーC = word.charAt(I)。 (cur.next.get(C)== NULL)場合 cur.next.put(C、新しいノード())。 CUR = cur.next.get(C); } (cur.isWord!){もし cur.isWordがtrue =。 サイズ++; } } //查询单词ワード是否在トライ中 パブリックブール含み(文字列の単語){ ノードCUR =ルート。 用(INT iは= 0; I <word.length(); I ++){ チャーC = word.charAt(I)。 もし(cur.next.get(C)== NULL) ; falseを返すように CUR = cur.next.get(C); } ; cur.isWordを返す } //チェックプレフィックスでトライプレフィックスのワードがあるかどうか と呼ばれる構成単語の列最初の数文字://接頭辞を単語の接頭辞、言葉の統合は、言葉自体がプレフィックスです //プレフィックスクエリ含むクエリロジックと同様の 公共ブールisPrefix(文字列の接頭辞){ ;ノードCUR =ルート (INT I = 0; I <prefix.length( ); I ++){ チャーprefix.charAt C =(I); IF(cur.next.get(C)== NULL) ; falseに戻り CUR = cur.next.get(C); } trueにリターン; } }