Я хочу, чтобы DFS-график (нерекурсивный) с использованием ArrayList и списка смежности. У меня есть следующий список смежностиНерекурсивная DFS в Java с итераторами
2 3 4
1 3 4
1 2 4
1 2 3
Так узел 1 -> 2,3,4 узел 2 -> 1,3,4 ... я уже список смежности реализован в массивах, как это: (L являются линиями, а л элементы на линии)
ArrayList<List<Integer>>L=new ArrayList<List<Integer>>();
ArrayList<Integer>l=new ArrayList<Integer>();
Я написал на бумаге следующий алгоритм, чтобы напечатать DFS графа с использованием 2 Стеки. Первым узлом может быть любой узел.
//all viz[i] = 0;
stack.push(root);
while (!stack.isEmpty())
{
node = stack.pop();
print node;
viz[node]=1;
for (each node.childnodes)
{
if(viz[i]==0) {stack.push(childnode)}
}
}
Я не понимаю, как реализовать Итераторы, чтобы я мог использовать аррайалистов с моим алгоритмом. Я очень благодарен за любую помощь!
Вы должны использовать реализацию SortedMap! См .: http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html http://docs.oracle.com/javase/7/docs/api/java/util/ TreeMap.html –
Я сделал это в своем lib с помощью 'AbstractIterator' Guava, он, вероятно, немного сложнее, чем вам это нужно. https://github.com/thomasjungblut/tjungblut-graph/blob/master/src/de/jungblut/graph/GraphWalker.java#L67 –