# 1522. Diameter of N-Ary Tree ###### tags: `Leetcode` `Medium` `DFS` `FaceBook` Link: https://leetcode.com/problems/diameter-of-n-ary-tree/ ## 思路 随时记录每个maxLen,也就是所有child进入maxDepth()函数之后返回的值当中最大的两个求和 最大的两个这里是用array维护的~ 也可以用priority queue最小堆 maxDepth返回以这个node为root的最长分支的长度 ## Code ```java= class Solution { int maxDiameter = 0; public int diameter(Node root) { dfs(root); return maxDiameter; } private int dfs(Node root){ if(root == null) return 0; int[] maxLen = new int[2]; for(Node child:root.children){ int len = dfs(child)+1; if(len>maxLen[1] && len>maxLen[0]){ maxLen[1] = maxLen[0]; maxLen[0] = len; } else if(len>maxLen[1]) maxLen[1] = len; } maxDiameter = Math.max(maxDiameter, maxLen[0]+maxLen[1]); return maxLen[0]; } } ```