Coding Test

Graph | 깊이 우선 탐색 (Depth-First Search)

이진유진 2024. 10. 17. 00:02
반응형

1. DFS 알고리즘 구현 

자료구조 스택과 큐를 활용함

 * needVisit 스택과 visited 큐, 두 개의 자료 구조를 생성 

 

   BFS 자료구조는 두 개의 큐를 활용하는데 반해, DFS는 스택과 큐를 활용한다는 차이가 있음을 인지해야 함 

 

public class DFSSearch {
	public ArrayList<String> dfsFunc(HashMap<String, ArrayList<String>> graph, String startNode) {
    	ArrayList<String> visited = new ArrayList<String>();
        ArrayList<String> needVisit = new ArrayList<String>();
        
        needVisit.add(startNode);
        
        while(needVisit.size() > 0) {
        	String node = needVisit.remove(needVisit.size() - 1); // BFS와 이 부분만 차이 (큐 -> 스택)
            if(!visited.contains(node)) {
            	visited.add(node);
                needVisit.addAll(graph.get(node));
            }
        }
        return visited;
        }
    
    }
}

2. 시간복잡도 

노드 수 : V

간선 수 : E

O(V+E)

반응형