// Método que verifica se um string está na trie, retorna 1 caso estejae -1 caso contrário int Trie::buscaString(string word) { int i = 0; Nodo* Aux; // Nodo auxiliar Aux = raiz; // que recebe a raiz da trie word = converteString(word); // Converte todas as letras para maiúsculas while(word[i] != '\0') // enquanto não é o fim da string continua procurando { Aux = Aux->getNodo(word[i]); // auxiliar recebe o nodo pra onde aponta o caracter da string if (Aux != NULL) // Se esse nodo não for nulo é porque até o momento existe a string então tem que seguir procurando { if ( word[i] == '$') // Caso chegou no caracter de fim de string é porque a string está na trie { return 1; // Então retorna 1 } // Se nao for caracter de fim de string apenas segue pro proximo caracter } else // Se o nodo for nulo então é porque não tem o caracter q ta procurando logo a string toda nao da na trie { return -1; // retorna -1 } i++; } }
// Método que insere um string na trie void Trie::insereString(string word) { int i = 0; Nodo* Aux; // Nodo auxiliar Aux = raiz; // que recebe a raiz da trie word = converteString(word); // Converte todas as letras para maiusculas while(word[i] != '\0') // enquanto nao é o fim da string vai adicionando { if (Aux->getNodo(word[i]) == NULL) // Se o nodo for nulo é porque ainda não foi inserido um prefixo igual { Aux->insere(word[i]); // Nesse caso insere um nodo com este prefixo } Aux = Aux->getNodo(word[i]); // E o nodo auxiliar desce um nodo na hierarquia da trie i++; } }
// Método que encontra a maior string que se pode encontrar na trie, não necessariamente indo até o fim dela string Trie::buscaMaiorString(string word) { int i = 0; Nodo* aux = raiz; // Nodo auxiliar que recebe a raiz da trie string aux2; // string auxiliar while(word[i] != '\0') // Enquanto não for o fim da string segue procurando { aux = aux->getNodo(word[i]); // Nodo auxiliar recebe o próximo nodo correspondente ao caracter if (aux == NULL) // Se ele for nulo é porque a maior substring encontrada foi a lida a agora break; // Logo sai do laço aux2 += word[i]; // Se não for nulo então existe aquele caracter, logo concatena ele na string auxiliar e segue procurando pelo próximo caracter i++; } return aux2; }