Здесь есть несколько ответов: Хороший алгоритм обхода графа
и здесь: http://en.wikipedia.org/wiki/Topological_sorting
В общем, после посещения узла вы должны посетить его связанныйузлы, но только узлы, которые еще не посещены.Чтобы отслеживать посещенные узлы, вам нужно сохранить идентификаторы узлов в наборе (или карте), или вы можете пометить узел как посещенный (каким-либо образом).
Если вы заботитесь о топологическом порядке, вы должны сначала получить коллекцию всех непроходных ссылок («оставшихся ссылок») на узел, отсортированных по идентификатору ссылочного узла (обычно:карта (идентификатор узла -> количество ссылок)).Если у вас этого нет, вам может потребоваться построить его, используя подход, аналогичный описанному выше.Затем начните с посещения узла, у которого количество оставшихся входящих ссылок равно нулю.Для каждой ссылки с этого узла уменьшите количество оставшихся ссылок для каждого связанного узла, добавив связанный узел к набору посещаемых узлов (или просто посещающих узел), если счет достигает нуля.