Given a root of an N-ary tree, you need to compute the length of the diameter of the tree.
The diameter of an N-ary tree is the length of the longest path between any two nodes in the tree. This path may or may not pass through the root.
(Nary-Tree input serialization is represented in their level order traversal, each group of children is separated by the null value.)
Example 1:
Input: root = [1,null,3,2,4,null,5,6]
Output: 3
Explanation: Diameter is shown in red color.
Example 2:
Input: root = [1,null,2,null,3,4,null,5,null,6]
Output: 4
Example 3:
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: 7
1 class Solution {
2 int max = 0;
3 public int diameter(Node root) {
4 max = 0;
5 getDiameter(root);
6 return max;
7 }
8
9 private int getDiameter(Node node) {
10 if(node == null) {
11 return 0;
12 }
13 List<Node> children = node.children;
14 int maxOne = 0; // max from all children
15 int maxTwo = 0; // second max from all children
16 for (Node child :children) {
17 int res = getDiameter(child);
18 if (res > maxOne) {
19 maxTwo = maxOne;
20 maxOne = res;
21 } else if (res > maxTwo) {
22 maxTwo = res;
23 }
24 }
25 max = Math.max(max, maxOne + maxTwo);
26 return maxOne + 1;
27 }
28 }