10. 말단 노드까지 최소 간선 BFS

2023. 11. 23. 20:29·자바 알고리즘 문제풀이/Recursive, Tree, Graph(DFS, BFS 기초)

1. 문제

 

최소 간선의 길이를 BFS로 풀기

 

 

2 - 1. 나의 풀이

그냥 기본적인 BFS에 Node.lt ==null &&Node.rt == null 이면 해당 계층을 반환하면된다.

 

주의할 점은

for문에서 i < q.size()를 쓰면 안되고

int len = q.size()를 한다음 i < len으로 적어야한다.

for문을 돌면서 q의 사이즈가 계속 늘어나기 때문이다.

 

 

2 - 2. 나의 코드

package BFS_DFS;
import java.util.*;

class Node {
    int data;
    Node lt, rt;

    Node(int value) {
        this.data = value;
    }
}

public class bfs10 {
    static Node root;

    public static int BFS(int L,Node root) {
        Queue<Node> q = new LinkedList<>();
        q.offer(root);

        while (!q.isEmpty()) {
            int len = q.size();
            for (int i = 0; i < len; i++) {
                Node tmp = q.poll();
                if(tmp.lt ==null && tmp.rt ==null) return L ;
                if(tmp.lt != null) q.offer(tmp.lt);
                if(tmp.rt != null) q.offer(tmp.rt);
                }
            L++;
        }

        return 0;
    }

    public static void main(String[] args) {
        root = new Node(1);
        root.lt = new Node(2);
        root.rt = new Node(3);
        root.lt.lt = new Node(4);
        root.lt.rt = new Node(5);
        
        System.out.println(BFS(0,root));
    }
}

 

3. 강의

나와 같다.

 

 

4. 얻어갈 점

for문이 돌면서 큐의 크기가 변하므로 int len = q.size()로 for문 돌기전 큐의 크기를 저장해두는것이 중요하다.

'자바 알고리즘 문제풀이 > Recursive, Tree, Graph(DFS, BFS 기초)' 카테고리의 다른 글

12. 경로탐색 (DFS)  (2) 2023.11.24
11. 그래프와 인접 행렬 이론 편.  (1) 2023.11.23
★9. 말단 노드까지 최소 간선 DFS  (0) 2023.11.22
8. 송아지 찾기 1 (BFS: 상태 트리 검색)  (1) 2023.11.20
7. 이진트리 레벨 탐색 (BFS: Breadth - First Search)  (0) 2023.11.20
'자바 알고리즘 문제풀이/Recursive, Tree, Graph(DFS, BFS 기초)' 카테고리의 다른 글
  • 12. 경로탐색 (DFS)
  • 11. 그래프와 인접 행렬 이론 편.
  • ★9. 말단 노드까지 최소 간선 DFS
  • 8. 송아지 찾기 1 (BFS: 상태 트리 검색)
송우석입니다
송우석입니다
  • 송우석입니다
    송우석
    송우석입니다
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (135) N
      • JAVA (1)
      • 자바 알고리즘 문제풀이 (82) N
        • 백준 (8)
        • String(문자열) (12) N
        • Array(1, 2차원 배열) (12)
        • Two pointers, Sliding windo.. (6)
        • HashMap, TreeSet(해쉬, 정렬지원 S.. (5)
        • Stack, Queue(자료구조) (8)
        • Sorting and Searching(정렬, 이.. (10)
        • Recursive, Tree, Graph(DFS,.. (14)
        • DFS, BFS 활용 (6)
        • 다시 시작! (1)
      • 일상 (19)
      • Github (1)
      • MSA 공부 (3)
      • 경제, 금융, 디지털, 시사 (3)
      • 라즈베리파이 (10)
      • 프로젝트에서 일어난 일 (13)
      • FrontEnd 공부 (3) N
        • React (2) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
송우석입니다
10. 말단 노드까지 최소 간선 BFS
상단으로

티스토리툴바