8장과 9장은 각각 DFS, BFS에 대한 문제들이다.
생각보다 많이 헤맸던 챕터였기 때문에, 처음부터 이론에 대한 공부를 다시 하느라 시간이 많이 걸렸다. 다행히 이론을 다시 공부하고나니, 문제들이 이해되기 시작했다...!
헷갈리는 DFS, BFS 개념을 정리해보자.
순회알고리즘이란, 그래프와 트리에 저장된 모든 값을 중복이나, 빠짐없이 살펴보고싶을 때 사용한다.
순회 알고리즘에는 DFS, BFS가 있다. 가장 먼저 DFS의 순회방법은 전위순회, 중위순회, 후위순회가 있다. 다음으로 BFS의 순회방법은 레벨순회이다. 각각에 대해 더 자세히 알아보자!
*시작노드를 스택에 삽입하며 시작한다(DFS는 주로 전위순회로 구현) + 동시에 방문처리 해준다. (이후 아래과정 반복)
(1) 스택의 최상단 노드를 확인한다.
(2-1) 최상단 노드에게 방문하지 않은 노드가 있으면 그 노드를 스택에 넣고 방문처리한다.
(2-2) 최상단 노드에게 방문하지 않은 인접노드가 없으면 스택에서 최상단 노드를 뺀다.
위 과정이 이해되지 않는다면, 링크나 아이패드에 녹화해놓은 영상을 다시 보자!
과정참고
*시작노드를 큐에 삽입하며 시작 + 방문처리 (이후 아래과정 반복)
(1) 큐에서 하나의 노드를 꺼낸다.
(2) 해당 노드에 연결된 노드 중, 방문하지 않은 노드를 방문하고 차례대로 큐에 삽입 후 방문처리한다.
위 과정이 이해되지 않는다면, 링크나 아이패드에 녹화해놓은 영상을 다시 보자!
과정참고