Обход, чтобы найти вершину в узле и возвращает индекс

Я работаю с разложением деревьев, и я пытаюсь найти вершину в узлах дерева.

я бы хотел вернуть индекс этого узла если вершина найдена. Я пытаюсь пройтись по дереву способом 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 если вершина не найдена.

0

Решение

Я понял!!! Вам просто нужно изменить код:

for(int i=0; i<node->children.size(); i++)

чтобы:

for(int i=0; i< nn->children.size(); i++)

а также в теле. Ты знаешь почему?

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector