I need to find bridges in a graph with iterative dfs the code is a recursive one, and I have no idea about how to convert it to an iterative dfs
void bridgeUtil(int u, boolean visited[], int disc[], int low[], int parent[])
{
visited[u] = true;
disc[u] = low[u] = ++time;
Iterator<Integer> i = adj_sub[u].iterator();
while (i.hasNext())
{
int v = i.next();
if (!visited[v])
{
parent[v] = u;
bridgeUtil(v, visited, disc, low, parent);
low[u] = Math.min(low[u], low[v]);
if (low[v] > disc[u]) {
System.out.print(u);
System.out.print(" ");
System.out.println(v);
}
}
else if (v != parent[u]) {
low[u] = Math.min(low[u], disc[v]);
}
}
}
void bridge()
{
boolean visited[] = new boolean[V];
int disc[] = new int[V];
int low[] = new int[V];
int parent[] = new int[V];
for (int i = 0; i < V; i++)
{
parent[i] = NIL;
visited[i] = false;
}
for (int i = 0; i < V; i++)
if (visited[i] == false) {
bridgeUtil(i, visited, disc, low, parent);
//DFS_sub(i, visited, disc, low, parent);
}
}