당신은 에 있습니다. 행은 010100
이고 이웃은 b
, d
입니다. 그래서 스택에 사람을 넣어 (당신은 a
를 방문한) :
[d b] {a}
팝 d
방문 노드 세트에 추가, 거기 방문 - 111000
(a
, b
, c
)을 (하지만 당신은 방문 a
) :
[c b b] {a d}
팝 c
방문 노드 세트에 추가, 거기 방문 - 010110
(b
, d
, e
()하지만 우리는) d
를 방문 : 방문 노드 세트에 추가하고, 거기에 방문
[e b b b] {a d c}
팝업 e
-)) 001001
(c
, f
(하지만 우리는 c
를 방문한 :
[f b b b] {a d c e}
:
000010
(
e
)을 (하지만 우리가 방문) -
팝 f
는 방문 노드 세트에 추가, 거기 방문 ,
[b b] {a d c e f b}
우리는 B를 방문한 : 101100
(a
, c
, d
)을 (하지만 우리는 모든를 방문) - 533,210
팝 b
는 방문 노드 세트에 추가, 거기 방문 그래서 두 번 버리고 버려.
[] {a d c e f b}
ps ps는 DFS이므로 스택이 아니며 대기열이 아닙니다 (두 질문에 모두 언급 됨). BFS 것이 유사하다 그러나 당신은 대기열에 추가, 그래서 처음 몇 단계는 다음과 같습니다 b
및 c
는 "왼쪽"(그러나 우리는 여전히 걸릴 대신 "오른쪽"에 추가됩니다
[d b] {a}
[b b c] {a d}
왼쪽부터, 그래서 우리는 너비가 넓고 다음 노드는 b
이 될 것입니다.
인가? 그렇다면 그렇게 태그를 달아야합니다. – smessing
또한 인접 행렬에서 실제 그래프를 그리는 것이 좋습니다. 이렇게하면 DFS의 작동 방식을 더 잘 이해할 수 있습니다. 그런 다음 스택에 DFS가 어떻게 작동하는지 감을 잡기 위해 DFS의 기능을 수행합니다. – smessing
당신은 왜 그것을 밖으로 시도하지 않아? DFS를 구현하고 수정할 때마다 스택을 인쇄하십시오. –