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 }