#include #include using namespace std; struct trie{ map m; // arcos bool final = false; // ¿una palabra termina en este nodo? void agregar(char *s){ if( *s ) m[*s].agregar(s+1); else final = true; } trie* buscar(char *s){ if( *s ){ if( m.count(*s) ) return m[*s].buscar(s+1); else return NULL; }else if( final ) return this; else return NULL; } void eliminar(char *s){ if( *s ) m[*s].eliminar(s+1); else final = false; } }; int main(){ trie t; t.agregar("CASA"); t.agregar("CAMA"); t.agregar("CAMARERO"); t.agregar("CASERO"); if( t.buscar("CAM") ) cout<<"CAM esta"<