Exemple #1
0
    private int removeAux(string word, ITrieNode node)  //TODO: FALTA PROBAR
    {
        if (word == "")
        {               //Caso base recursivo
            if (!Convert.ToBoolean(node.isTerminated()))
            {
                return(0);
            }
        }
        else if (Convert.ToBoolean(node.isTerminated()))  //TODO: Falta verificar que ya se haya revisado toda la palabra
        {
            return(0);
        }
        else
        {          //Caso trivial
            removeAux(word.Substring(1), node.value(word[0]));
        }

        //Rollback
        if (node.getChildrenCount() < 2)
        {
            node.asign(word[0], null);
            return(1);
        }
        else
        {
            return(0);
        }
    }
Exemple #2
0
 public bool MoveNext()
 {
     //Verificamos si estamos en el inicio del árbol y cuál es el último cáracter recorrido
     if (0 == _currentWord.Length)               //Si sí, empezamos desde el inicio
     {
         _currentNode = MoveNextAux(_currentNode);
         return(true);
     }
     else                                        //Si no avanzamos a partir del último carácter leído
     {
         if (_currentNode != null)
         {
             if (_currentNode.getChildrenCount() > 0)
             {
                 for (int i = charToNum(_currentWord[_currentWord.Length]) + 1; i < 27; i++)
                 {
                     if (_currentNode.value(numToChar(i)) != null)
                     {
                         _currentNode = _currentNode.value(numToChar(i));//TODO: Genera inconsistencia
                         _currentNode = MoveNextAux(_currentNode);
                     }
                 }
             }
             else
             {
                 _currentWord.Substring(0, _currentWord.Length - 1);//Elimina el último caracter
                 _currentNode = _currentNode.getParent();
                 for (int i = charToNum(_currentWord[_currentWord.Length]) + 1; i < 27; i++)
                 {
                     if (_currentNode.value(numToChar(i)) != null)
                     {
                         _currentNode = _currentNode.value(numToChar(i));//TODO: Genera inconsistencia
                         _currentNode = MoveNextAux(_currentNode);
                     }
                 }
             }
             return(true);
         }
         else
         {
             return(false);
         }
     }
 }