Для обхода необходим эффективный способ поиска определенного узла в посещаемом наборе.Это можно эффективно сделать с помощью поиска в массиве, например if (!visited[neigh])
.Другой вариант - использовать строковый ключ и объект для представления посещенного набора, но он, вероятно, будет менее эффективным.Ссылка на узлы как на объекты только усложнит ситуацию, поскольку не будет естественного ключа, который можно было бы использовать для определения членства в посещаемом наборе.