Leetcode
2020.04.30 11:59
559. Maximum Depth of N-ary Tree
조회 수 291 추천 수 0 댓글 0
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).
Example 1:
Input: root = [1,null,3,2,4,null,5,6] Output: 3
Example 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
Constraints:
- The depth of the n-ary tree is less than or equal to
1000
. - The total number of nodes is between
[0, 10^4]
.
/* // Definition for a Node. class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, List<Node> _children) { val = _val; children = _children; } }; */ class Solution { public int maxDepth(Node root) { Queue<Node> queue = new LinkedList<>(); int depth = 0; if(root == null){ return depth; } queue.offer(root); while(queue.size() > 0){ int size = queue.size(); for(int i=0; i<size; i++){ Node node = queue.poll(); for(int j=0; j<node.children.size(); j++){ queue.offer(node.children.get(j)); } } depth++; } return depth; } }
/* // Definition for a Node. class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, List<Node> _children) { val = _val; children = _children; } }; */ class Solution { public int maxDepth(Node root) { return findDepth(root, 1); } public int findDepth(Node node, int depth){ if(node == null){ return depth - 1; } if(node.children == null || node.children.size() == 0){ return depth; } int[] depths = new int[node.children.size()]; for(int i=0; i<depths.length; i++){ depths[i] = findDepth(node.children.get(i), depth + 1); } Arrays.sort(depths); return depths[depths.length-1]; } }
[문제] https://leetcode.com/problems/maximum-depth-of-n-ary-tree/