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