Поиск пути в н-арном дереве
Столкнулся с проблемой поиска длиннейшего от корня пути проходящего только по нечетным вершинам. Не могу понять почему программа падает и что не так в моем алгоритме.
void Path(NTree* root)
{
int temppath = 0;
for (int i = 0; i <root->N ; ++i)
{
if (root[i].data % 2 != 0)
{
temppath++;
if (temppath > path) path = temppath;
Path(root[i].Child[i]);
}
}
}
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Ну и кому нужна локальная переменная, в которой считается количество нечетных детей? Она помрёт без пользы.
Для нахождения длины макс. пути можно использовать что-то вроде этого:
int Path(NTree* root)
{
int temppath = 0;
for (int i = 0; i <root->N ; ++i)
if (root[i].data % 2)
temppath = max(temppath, Path(root[i].Child[i]));
return 1 + temppath;
}