★9. 말단 노드까지 최소 간선 DFS

2023. 11. 22. 17:36·알고리즘/Recursive, Tree, Graph(DFS, BFS 기초)

1. 문제

말단 노드 중에서 간선의 길이가 가장 짧은 길이를 출력하시오.

 

 

2. 나

강의 보고 진행

 

3 - 1. 강의 풀이

강의에서는 완전 이진트리에서만 풀이가 가능하다는 전제를 세웠다.

양 쪽 자식노드가 null이면 말단 노드라는 뜻이므로 해당 계층 L을 리턴한다.

해당 L은 옆에있는 노드의 말단 노드의 계층과 min으로 비교되어서 리턴된다.

 

커뮤니티에서 불완전 이진트리에 대한 풀이도 있다.

 

 

 

 

 

3 - 2. 강의 코드

완전 이진트리

package BFS_DFS;
import java.util.*;


class Node {
    int data;
    Node lt, rt;

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

}

public class dfs09 {
    static Node root;

    public static 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) {
        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(DFS(0,root));
    }
}

 

불완전 이진트리

package BFS_DFS;
import java.util.*;

class Node {
    int data;
    Node lt, rt;

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

}

public class dfs09 {
    static Node root;

    public static int DFS(int L,Node root) {
        if (root == null || (root.lt == null && root.rt == null)) {
            return L;
        } else return Math.min(DFS(L + 1, root.lt), DFS(L + 1, root.rt));
		//불완전 이진트리인 root 노드가 root.lt, root.rt를 호출할 때
        //root ==null에 걸려서 해당 계층을 바로 리턴하게된다.
    }

    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(DFS(0,root));
    }
}

 

4. 얻어갈 점

불완전 이진트리를 중심으로 알아가면 많은 도움이 될 듯.

꼭 그려보면서 흐름을 익히자.

'알고리즘 > Recursive, Tree, Graph(DFS, BFS 기초)' 카테고리의 다른 글

11. 그래프와 인접 행렬 이론 편.  (1) 2023.11.23
10. 말단 노드까지 최소 간선 BFS  (0) 2023.11.23
8. 송아지 찾기 1 (BFS: 상태 트리 검색)  (1) 2023.11.20
7. 이진트리 레벨 탐색 (BFS: Breadth - First Search)  (0) 2023.11.20
6. 부분 집합 구하기(DFS)  (1) 2023.11.16
'알고리즘/Recursive, Tree, Graph(DFS, BFS 기초)' 카테고리의 다른 글
  • 11. 그래프와 인접 행렬 이론 편.
  • 10. 말단 노드까지 최소 간선 BFS
  • 8. 송아지 찾기 1 (BFS: 상태 트리 검색)
  • 7. 이진트리 레벨 탐색 (BFS: Breadth - First Search)
koreaioi
koreaioi
  • koreaioi
    koreaioi
    koreaioi
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (158) N
      • JAVA (2)
      • 알고리즘 (88)
        • 백준 (11)
        • String(문자열) (12)
        • Array(1, 2차원 배열) (13)
        • 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)
        • 기초 수학 (1)
      • 일상 (22)
      • Github (1)
      • MSA 공부 (4)
      • 경제, 금융, 디지털, 시사 (3)
      • 라즈베리파이 (10)
      • 프로젝트에서 일어난 일 (16) N
      • FrontEnd 공부 (9)
        • React (8)
      • Spring (2)
      • 기술 세미나 (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
koreaioi
★9. 말단 노드까지 최소 간선 DFS
상단으로

티스토리툴바