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); } }
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); } } }