순회 순서 질문
394
작성한 질문수 1
선배님 DFS 순회 순서에 대해 질문이있어서 글 남깁니다.
void DFS(int now)
{
//전위
cout << now << endl;
visited[here] = true;
for(int next = now ; next < length ; ++next)
{
if(visited[next])
continue;
}
//후위
cout << now << endl;
}질문 1. 주석에 써넣은대로 전위 후위 순회가 맞나요?
질문 2. 그래프에는 중위 순회가 존재하지 않는건가요?
질문 3. visited[here]의 위치는 항상 포문 위쪽에 고정되어야 하는건가요? 후위순회라면 방문 기록도 밑에 있어야할 것 같은데 포문 아래쪽에 작성하게 되면 동작이 원하는대로 되지 않아서요.. 이해를 잘못한건지ㅠㅠ 궁금합니다
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
질문에 답변 드리겠습니다.
질문 1에 대한 답변입니다. 주석에 써넣은 대로 전위 후위 순회가 맞습니다. 해당 코드에서는 노드를 방문한 후 자식 노드를 탐색하기 전에 전위 순회를 하고, 모든 자식 노드를 탐색한 뒤 해당 노드를 다시 출력하는 후위 순회를 하고 있습니다.
질문 2에 대한 답변입니다. 그래프에서는 일반적으로 중위 순회를 사용하지 않습니다. 중위 순회는 주로 이진 트리에서 사용되는 방법이므로 그래프에서는 잘 쓰이지 않습니다. 중위 순회는 좌우 순서를 중요시하기 때문에 그래프의 환경에 적합하지 않을 수 있습니다.
질문 3에 대한 답변입니다. visited[here]의 위치는 항상 포문 위에 고정되어야 하는 것은 아닙니다. 후위 순회라면 방문 기록도 포문 아래에 작성해도 되는데, 포문 위에 작성했을 때 동작이 원하는 대로 되지 않는다는 말씀이시죠? 이 부분은 코드의 구현 방식에 따라 달라질 수 있습니다. 일반적으로는 전위 순회에서 방문 기록은 포문 위에 작성하고, 후위 순회에서는 포문 아래에 작성하는 것이 일반적입니다. 그렇지만 구체적인 구현 방식이나 사용되는 변수에 따라 방문 기록의 위치를 조정해야 할 수도 있습니다. 코드의 동작 방식을 다시 확인해보시고, 원하는 결과가 나오지 않을 때는 코드를 재검토해보시기를 권장드립니다.
더 궁금한 점이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!
게임개발에서 주로 어느부분에 알고리즘들이 쓰이는지 궁금합니다
0
180
2
글꼴 바꿔도 자간이 좁아 찌그러져보이시는 분들
0
89
1
NullReferenceException 예외) 같은 실수하시는분 계실까봐 남겨요
0
68
1
parent를 Pos타입으로 만든 이유
0
74
1
콘솔창에 격자가 안나옴 미로 생성 X
0
137
1
격자 생성 안됨 무한루프
0
114
1
BFS 질문
0
144
2
격자 무한 출력
0
169
2
A* 의 PriorityQueue 관련 질문입니다
0
157
2
vscode에서 원그리기
0
184
1
환결설정 강의 원 그리기
0
123
1
15-17분
0
88
1
3:16초에 근데 이렇게 해가지고 부분에 "{}"를 만들어서 자식 node들을 생성하던데 왜 중괄호로 감싸게 만드는 건가요?
0
142
2
동적 배열 관련 질문입니다!
0
209
1
Big-o 표기법에서 시간 복잡도
0
167
1
7:40에서 언급하신 색상이 날아가는 문제 이해를 못하겠습니다
0
153
1
트리구현연습 강의 질문있어요
0
143
1
창은 뜨는데 맵이 나타나지 않아요.
0
177
1
Ctrl F5 하면 나오는 창은 어디서 설정할까요??
0
273
1
void CalcPathFromParent(Pos[,] parent)에 대해서
0
203
2
NullReferenceException예외가 발생했을때 어떻게 해야하나요?
0
230
1
[해결] 환경설정 강의에서 원이 이상하게 그려지는 문제
3
317
2
오른손 법칙에서 플레이어 점이 안 움직입니다
0
246
2
맵 만들기 오류
0
180
1





