コード例 #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);
        }
    }
コード例 #2
0
    public int search(string word)
    {
        ITrieNode actualNode = _rootNode;

        foreach (char c in word)
        {
            if (actualNode.value(c) == null)
            {
                //Si la letra no existe no está
                break;
            }
            else
            {
                //Si sí existe se sigue revisando
                actualNode = actualNode.value(c);
            }
        }
        return(actualNode.isTerminated());
    }
コード例 #3
0
 private ITrieNode MoveNextAux(ITrieNode currentNode)
 {
     if (Convert.ToBoolean(currentNode.isTerminated()))
     {//Caso Base Recursivo
         return(currentNode);
     }
     else
     {
         for (int i = 0; i < 27; i++)
         {
             char currentChar = numToChar(i);
             if (currentNode.value(currentChar) != null)    //Si encuentra una letra
             {
                 _currentWord += currentChar;               //Se añade la letra encontrada
                 return(MoveNextAux(currentNode.value(currentChar)));
             }
         }
         return(null);
     }
 }