본문 바로가기
알고리즘 문제 풀이/BFS

559. Maximum Depth of N-ary Tree

by 가나무마 2021. 7. 8.
728x90

본 알고리즘 풀이는 Routine Study에서 진행하고 있습니다.
구성원이 대부분 초보이므로, 원하시는분은 언제라도 들어오셔도 좋습니다.

팀 알고리즘 레포지토리 주소

 

ROUTINE-STUDY/Algorithm

초보 알고리즘 스터디 / 누구나 참여 가능 :runner:. Contribute to ROUTINE-STUDY/Algorithm development by creating an account on GitHub.

github.com

문제 출처

 

Maximum Depth of N-ary Tree - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

[문제 설명]

높이의 깊이를 구하시오. 예제에서는 5,6이 최대 깊이므로 3이 됩니다.

[처음 생각한 접근 방법]

기본적인 BFS 방식으로 접근하면 될 거 같았습니다.

계층만큼 for문을 반복해서 끝나면 다음 계층으로 가는 식으로 하는 걸로 했습니다.

import java.util.LinkedList;
import java.util.Queue;

class Solution {
    public int maxDepth(Node root) {
        //BFS를 위해 Queue이용.
        Queue<Node> q = new LinkedList<>();
        //깊이를 저장할 변수를 선언.
        int depth = 0;
        //만약 노드가 하나도 없으면 0층을 반환.
        if (root == null) return 0;
        //제일 최상단 노드를 넣어줌.
        q.offer(root);

        //Queue가 빌 때까지 반복(모든 계층 탐색)
        while (!q.isEmpty()) {
            //일단 Queue에 요소가 있으므로 계층이 있음
            //-> depth를 증가.
            depth++;
            //계층의 크기를 구해줌.
            int size = q.size();

            //계층의 크기만큼 반복.
            //위의 예제로 치면,
            //1
            //3,2,4
            //5,6
            while (size-- > 0) {
                Node node = q.poll();
                //계층에 자식 요소들을 넣어줌.
                //다음층을 위해서.
                for (Node child : node.children) {
                    q.offer(child);
                }
            }
        }

        //깊이를 반환.
        return depth;
    }
}
728x90
반응형

'알고리즘 문제 풀이 > BFS' 카테고리의 다른 글

프로그래머스 - 네트워크  (0) 2021.07.23
103. Binary Tree Zigzag Level Order Traversal  (0) 2021.07.22
226. Invert Binary  (0) 2021.07.05
690. Employee Importance  (0) 2021.07.01
BFS  (0) 2021.05.07