Home LeetCode - 559. Maximum Depth of N-ary Tree
Post
Cancel

LeetCode - 559. Maximum Depth of N-ary Tree

559. Maximum Depth of N-ary Tree - easy

문제

Given a n-ary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

Nary-Tree input serialization is represented in their level order traversal, each group of children is separated by the null value (See examples).

제한사항

  • The depth of the n-ary tree is less than or equal to 1000.
  • The total number of nodes is between [0, 10^4].

입출력 예

example

1
2
Input: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
Output: 5

example

1
2
Input: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
Output: 5

풀이

  • Tree
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
31
32
33
34
35
36
37
38
39
40
41
42
/*
// Definition for a Node.
class Node {
public:
    int val;
    vector<Node*> children;

    Node() {}

    Node(int _val) {
        val = _val;
    }

    Node(int _val, vector<Node*> _children) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {
public:
    // 재귀를 통해 leaf 노드부터 1씩 더해가면서 최대 depth를 탐색
    int maxDepth(Node* root) {
        if(root == nullptr)
            return 0;

        // 현재 노드가 leaf 노드라면 1을 리턴
        if(root->children.empty())
            return 1;

        // 여러 자식노드들의 depth를 탐색 및 저장
        // 현재 노드는 자식 노드의 depth의 + 1 이므로
        // 자식노드의 depth + 1 하여 현재노드의 최대 depth를 저장
        vector<int> depth;
        for(const auto& childNode : root->children){
            depth.push_back(maxDepth(childNode) + 1);
        }

        // 자식노드들 중 최대 depth를 리턴
        return *max_element(depth.begin(), depth.end());
    }
};
This post is licensed under CC BY 4.0 by the author.