Проблема в том, что ваш код выполняет неправильное сравнение, чтобы увидеть, существует ли элемент на карте.
Это:
if (currentNode->characters.find(word[i]) != currentNode->characters.end())
должно быть:
if (currentNode->characters.find(word[i]) == currentNode->characters.end())
Используя неправильное сравнение, вы получаете неинициализированный указатель.
Это также демонстрирует, что комментарии могут лгать о том, что делает код - единственное, что является правдой, это код. Я имею в виду этот комментарий прямо перед неправильным кодом:
/// character is not in the map
и, конечно, код не определяет, нет ли символа на карте. Это фактически проверяет, является ли символ на карте.