C++テンプレート:ディクショナリツリー

583 ワード

//  

void insert(char *s,char *s1){

    for(int l=strlen(s),x=0,i=0;i<l;i++){

        if(!trie[x].son[s[i]-'a'])trie[x].son[s[i]-'a']=++cnt;

        x=trie[x].son[s[i]-'a'];

        if(i==l-1)strcpy(trie[x].hash,s1);

    }

}



//  

int find(char *s){

    for(int l=strlen(s),x=0,i=0;i<l;i++){

        if(!trie[x].son[s[i]-'a'])return 0;

        x=trie[x].son[s[i]-'a'];

        if(i==l-1){

            strcpy(ans,trie[x].hash);

            return strlen(ans)?1:0;

        }

    }

}