Я работаю с разложением деревьев, и я пытаюсь найти вершину в узлах дерева.
я бы хотел вернуть индекс этого узла если вершина найдена. Я пытаюсь пройтись по дереву способом DFS. Мне удалось пройти все узлы, но как только найден узел с вершиной, он не возвращает индекс.
Ниже я попробовал. Может кто-нибудь указать, где я иду не так?
Node* Tree::traversing(Node* node, int v) {
vector<Node*> s;
s.push_back(node);
while(!s.empty()) {
Node* nn = s.back();
s.pop_back();
int i = nn->point_in_bag(v);
if(i != -1) { return nn;}
for(int i=0; i<node->children.size(); i++) {
Node* n = node->children[i];
s.push_back(n);
}
}
}
Функция point_in_bag
возвращает положительное целое число, если найдено и -1
если вершина не найдена.
Я понял!!! Вам просто нужно изменить код:
for(int i=0; i<node->children.size(); i++)
чтобы:
for(int i=0; i< nn->children.size(); i++)
а также в теле. Ты знаешь почему?
Других решений пока нет …