На этом шаге мы рассмотрим.этот алгоритм.
В приведённой ниже записи нерекурсивного алгоритма поиска в глубину на графе [1, с.125-126] предполагается, что:
while (Имеется хотя бы одна непосещённая вершина) { Пусть p - первая из непосещённых вершин. Посетить вершину p и поместить её в пустой стек S; while (Стек S непуст) { Пусть p - вершина, находящаяся на верхушке стека S; if (Вершина p имеет непосещённые смежные вершины) { Пусть q - первая непосещённая вершина из вершин, смежных вершине p. Пройти по ребру (p,q), посетить вершину q и поместить её в стек S } else Удалить вершину p из стека S } }
В результате работы алгоритма пройденные рёбра графа образуют вместе с посещёнными вершинами одно или несколько деревьев.
Если приписать пройденным рёбрам ориентацию в соответствии с тем направлением, в каком они проходятся при выполнении алгоритма, то мы получим совокупность корневых деревьев, причём их корнями будут служить те вершины, которые в процессе работы алгоритма помещались в пустой стек.
На следующем шаге мы рассмотрим поиск в ширину на графе.