Esempio n. 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);
        }
    }
Esempio n. 2
0
    public int insert(string word)
    {
        ITrieNode actualNode = _rootNode;

        foreach (char c in word)
        {
            if (actualNode.value(c) == null)
            {
                //Si la letra no existe se crea la nueva rama
                actualNode.asign(c, new TrieNode(actualNode));
                actualNode = actualNode.value(c);
            }
            else
            {
                //Si sí existe se sigue revisando
                actualNode = actualNode.value(c);
            }
        }
        return(actualNode.terminate());//Retorna si ya la palabra existía
    }