Итак, у меня есть этот групповой проект, который должен взять текстовый файл, нарезать его на виды и подтипы и тому подобное. Я закончил измельчение и древовидную структуру, но мне нелегко заставить работать BuildGraph(). Я сузил его до функции findNode(), которая сейчас выглядит какПоиск узла в дереве узлов с произвольным числом детей
EDIT: комментарии, также это мой первый пост, так жаль, если это уродливо. У меня были оба эти изменения в другой версии, но они в конечном итоге избавились от них?
Node* findNode(std::string data, Node* head){
if (head == NULL){
return NULL;
}
else if(head->data == data){
return head;
} else {
if(head->children[0]!=NULL){
for(int i = 0; i<head->children.size();i++){
return findNode(data, head->children.at(i));
}
}
}
структура Мой узел выглядит следующим образом ...
public:
std::string data;
std::vector <Node*> children;
Node(std::string data){
this->data=data;
}
Я уверен, что проблема, которую я бегу в кое-что о рекурсивном вызове будет глубже, а не каким-то образом расширяется вызывая segfault.
Может ли кто-нибудь сказать мне, возможно ли, что я хочу сделать?
'return findNode (data, head-> children.at (i));', вы пропустили 'return' –
Почему бы не проверить, не является ли' head' непустым? –