У меня есть простое цифровое дерево определяется следующим образом:найти самое длинное слово в цифровом дереве с помощью рекурсии
class DTN {
public:
DTN() :
is_word(false), word_to_here(""), children()
{}
DTN (bool iw, std::string wth) :
is_word(iw), word_to_here(wth), children()
{}
bool is_word;
std::string word_to_here;
Map<char,DTN> children;
};
Я имею проблему, чтобы определить функцию, называемую longest_word (Const DTN & ЦТС), которые предполагают, чтобы вернуться самое длинное слово в цифровом дереве с итератором и рекурсией, показано следующим образом:
std::string longest_word (const DTN& dtn) {
std::string lw = dtn.word_to_here;
for(auto s:dtn.children){
if(s.second.is_word && lw.length()<s.second.word_to_here.length()){
lw = longest_word(s.second);
}
longest_word(s.second);
}
return lw;
}
Предположит у нас есть три слова в цифровом дереве ЦТСА: (ант, муравьед, anthebellum), и вызов longest_word (ЦТС) будет дайте мне пустую строку "" вместо "anthebellum". Может ли кто-нибудь указать, что я сделал неправильно в функции longest_word? С фактическим кодом будет оценено, потому что мой английский не очень хорош, коды мне легче понять. Заранее спасибо.
Это не выглядит достаточно - дети типа? NTN против DTN? – mksteve
Мне очень жаль, я поставил здесь неправильный класс, я обновляю правильный. – Saoish