트라이 달성

사용법 #include <iostream> 
#INCLUDE < 문자열 > 
#INCLUDE <알고리즘>
 사용  스페이스 성병;
클래스 노드 {
     공개 : 
        노드 * 다음 [ 26 ]
        부울 isend; 
        노드 () { 
            위해 ( int로 I = 0 ; I는 < 26 ; I ++ ) { 
                다음 [I] = NULL; 
            } 
            isend = 거짓 ; 
        }
         ~ 노드 () {} 
    }; 
수업트라이 {
 공개 :
     / * * 여기에 데이터 구조를 초기화합니다. * / 
    노드 * 루트; 
    트라이 () { 
        루트 = 새로운 노드 (); 
    } 

    / * * 트라이에 단어를 insts. * / 
    무효 이달 ( 문자열 워드) { 
        기지국 * p =의 뿌리;
        위한 ( int로 I = 0 ; I는 <) (word.size 단계; 내가 ++ ) {
             경우 (P-!> 다음 [단어 [I] - ' ' ]) 
                P -> 다음 [워드 [I] - '' ] = ) (노드; 
            P = P-> 다음 [워드 [I] - ' ' ]; 
        } 
        P -> isend = ; 
    } / * * 반환 단어가 트라이에있는 경우. * / 부울 SE ( 문자열 단어) { 
        노드 * P는 = 루트;
        위한 ( int로 I = 0 ; I는 <) (word.size 단계; 내가 ++ ) {
             경우 (! P-> 다음 [단어 [I]는 - ' ' ])
                 반환 거짓 ;

    
     
            P= P-> 다음 [워드 [I] - ' ' ]; 
        } 리턴 P-> isend; 
    } / * * 주어진 접두사로 시작하는 트라이 어떤 단어가 있으면 돌려줍니다. * / BOOL startsWith ( 문자열 접두어) { 
        기지국 * p =의 뿌리;
        위한 ( int로 I = 0 ; I는 <) (prefix.size 단계; 내가 ++ ) {
             경우 (! P-> 다음 [프리픽스 [I]는 - ' ' ])
                 반환 거짓 ; 
            P = P-> 다음 [프리픽스 [I] -
        

    
     ' ' ]; 
        } 반환 사실 ; 
    } 
}; INT 본체 ( 무효 ) { 
    트리는 *의 트라이 = 새로운 트리는 (); 
    트라이 -> INST ( " 사과 " ); 
    COUT << trie-> SE ( " 애플 " ) << ' ' ;   // 返回진정한 
    COUT << trie-> SE ( " 애플리케이션 " ) << ' ' ;     // 返回거짓 
    COUT << trie->
         
  '  ' ; // 返回사실 
    trie-> INST ( " 응용 프로그램 " ); 
    COUT << trie-> SE ( " 애플리케이션 " ) << '  ' ;     // 返回진정한 
    반환  0 ; 

} 
/ * * 
 * 귀하의 트리는 객체가 같은 인스턴스 및 호출됩니다 : 
 * 트리는 * OBJ = 새로운 트리는 (); 
 *를 OBJ> 이달 (워드); 
 BOOL * PARAM_2를 OBJ => SE (워드); 
 BOOL * param_3를 OBJ => startsWith (접두사); 
 * /

 

추천

출처www.cnblogs.com/programyang/p/11279937.html