Я пытаюсь написать алгоритм, который определяет, является ли граф сильно связанным или нет. Я думаю, что мой код почти правильный, хотя я продолжаю получать StackOverFlowError. Я лично думаю, что из-за цикла в графе, с которым я тестирую свой алгоритм, мой код этого не понимает и зацикливается. Но я использую массив, чтобы увидеть, был ли узел уже посещен! Так что этого не должно случиться! Пожалуйста, помогите мне понять, что не так с моим кодом. В любом случае это мой код:
static void dfs(int src,boolean[] visited,Stack<Integer> stack){
visited[src]=true;
for(Integer i:adj[src]){
if(!visited[i]){
dfs(i,visited,stack);
}
}
stack.push(src);
}
Вот так я и назвал свою функцию DFS из main:
Stack<Integer> stack=new Stack<Integer>();
boolean[] visited=new boolean[n+1];
for(int i=1;i<=n;i++){
if(!visited[i]){
g.dfs(i,visited,stack);
}
}