クエリ10-4接頭辞トライ

プレフィックスクエリ:クエリ指定された文字列の接頭辞単語辞書の木があるかどうか!

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にリターン; 
    } 
}

  

おすすめ

転載: www.cnblogs.com/lpzh/p/12552105.html