DFS는 말그대로 한쪽 방향을 정하고 깊이 파고들어 그쪽에 원하는 목표가 있는지 찾고 없을경우 다른 반대쪽을 찾는 방식
DFS는 스택을 이용한다.
모든 노드를 검사할 수 있다.
스택을 이용할 때 알아둬야할 점은 지나고 스택에 들어갔다온 노드는 다시 스택에 들어가지 않는다는 것이다.
스택을 활용하여 출력 및 스택을 설명해본다.
스택: A
출력: -
스택: C B
출력: A
스택: C E D
출력: A B
스택: C E I H
출력: A B D
스택: C E
출력: A B D H I
스택: C K J
출력: A B D H I E
스택: C
출력: A B D H I E J K
스택: G F
출력: A B D H I E J K C
스택: G N L
출력: A B D H I E J K C F
스택: G
출력: A B D H I E J K C L N
스택: N
출력: A B D H I E J K C L N G
스택:
출력: A B D H I E J K C L N G N
BFS는 말그대로 각 depth의 노드들을 다 탐색한 후에 다음 depth로 넘어가서 탐색하는 방식이다.
BFS는 큐를 사용한다.
큐를 사용할 때 알아둬야할 점은 스택에 들어갔다온 노드는 다시 큐에 들어가지 않는 것이다. 또한 큐에서 나올때 출력된다.
큐를 활용하여 출력 및 스택을 설명해본다.
root node가 큐에 들어간다.
root node에 연결된 node를 큐에 넣기 위해 큐의 가장 앞에 값을 꺼내고 해당 값에 연결된 노드들을 큐에 넣는다.
큐: A
출력: -
큐: B C
출력: A
큐: C D E
출력: A B
큐: D E F G
출력: A B C
큐: E F G H I
출력: A B C D
큐: F G H I J K
출력: A B C D E
큐: G H I J K L N
출력: A B C D E F