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].
입출력 예
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
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());
}
};