Notice
Recent Posts
Recent Comments
Link
04-28 13:49
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- HTTP
- springboot
- AWS
- spring
- M2
- K-디지털트레이닝
- 맥
- https
- dbeaver
- 우리에프아이에스 #
- 클라우드 서비스 개발 #
- mysql
- Java
- 우리FISA
- 우리FIS아카데미 #
- route 53
- 맥북
- 클라우드 서비스 개발
- sts
- 리눅스
- jdk
- 로드밸런스
- 우리FIS아카데미
- 맥OS
- Gradle
- 도메인
- 우리FISA #
- 글로벌소프트웨어캠퍼스
- 우리에프아이에스
Archives
- Today
- Total
<<개발일지>>
[DFS] 9. Tree 말단노드까지의 가장 짧은 경로 본문
*최단 거리는 사실상 BFS로 푼다!!
하지만 공부하는 입장에서 BFS로 시도를 해본다.
<<풀이>>
우선 Node class를 만든 후 트리를 만들어준다!
L(Level)이 0인 곳 부터 해서 DFS를 시작한다. 이때 DFS는 Level를 반환하므로 타입은 int이다.
만약 lt, rt가 null이면 그 곳이 말단이기 때문에 바로 L를 반환한다.
그렇지 않으면 DFS를 지속하는데 Math 내장 클래스를 활용해서 Math.min(DFS(L + 1, root.lt), DFS(L + 1, root.rt)) 를 해줌으로써
말단 노드까지의 가장 짧은 경로를 return하게 한다.
*DFS 같은 경우 왼쪽에 있는 DFS가 먼저 다 계산 된 후 오른 쪽 DFS가 계산 된다. 이를 생각하며 스택을 그려보면서 공부를 계속하자! 그러다보면 DFS의 이해도가 한 층 더 깊어질 것이다~
class Node {
Node lt, rt;
int data;
public Node(int val) {
data = val;
lt = rt = null;
}
}
class Main {
Node root;
public int DFS(int L, Node root) {
if (root.lt == null && root.rt == null) return L;
else return Math.min(DFS(L+1, root.lt), DFS(L+1,root.rt));
}
public static void main(String[] args) {
Main tree = new Main();
tree.root = new Node(1);
tree.root.lt = new Node(2);
tree.root.rt = new Node(3);
tree.root.lt.lt = new Node(4);
tree.root.lt.rt = new Node(5);
System.out.println(tree.DFS(0, tree.root));
}
}
오늘도 배워간다!
'코딩테스트' 카테고리의 다른 글
[DFS] 12. 경로탐색 (1) | 2024.02.08 |
---|---|
[BFS] 10. 말단노드까지의 가장 짧은 경로 (1) | 2024.02.06 |
[BFS] 8. 송아지 찾기 (0) | 2024.02.04 |
[BFS] 7. 이진트리 레벨탐색 (0) | 2024.02.02 |
[DFS] 6. 부분 집합 구하기 (0) | 2024.02.02 |