코드
class Main {
static int n;
//체크 배열
static boolean[] ch;
public void DFS(int L){
if(L==n+1){
String tmp="";
for (int i = 1; i < ch.length; i++) {
tmp += ch[i]==true? i+" " : "";
}
System.out.println(tmp);
}
else{
ch[L]=true;
DFS(L+1);
ch[L]=false;
DFS(L+1);
}
}
public static void main(String[] args){
Main T = new Main();
n=3;
//단순히 인덱스 0을 버리기 위한 보정값
ch= new boolean[n+1];
T.DFS(1); //breakpoint
}
}
결과
1 2 3
1 2
1 3
1
2 3
2
3
전위 순회하는 과정에는 전부 ch를 true로 준다.
전위 순회끝나고 중위순회 부분에서 ch를 false로 준다.
반드시 breakpoint를 지정하고 ch[] 변화를 알아보는 것이 좋다.
'자료구조&알고리즘 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비' 카테고리의 다른 글
BFS상태트리_송아지찾기 (0) | 2023.02.24 |
---|---|
레벨탐색 BFS (0) | 2023.02.22 |
노드 순회(전위 순회, 중위 순회, 후위 순회) (0) | 2023.02.18 |
이분검색 (0) | 2023.02.16 |
피보나치 수열 (0) | 2023.02.13 |