树上问题
树的直径
树上任意两节点之间最长的简单路径即为树的「直径」
当以某个节点为根时,从这个节点出发,会得到最长路径d1和次长路径d2,则以该节点为根的最长路径为d1 + d2
// 已知树边关系 : vector<vector<int>> graph(n)
int maxLen = 0;
function<int(int)> dfs = [&](int root) {
    int maxRootLen = 0;
    for (auto next : graph[root]) {
        int len = dfs(next) + 1;
        // 以当前节点为根节点的最长路径
        maxLen = max(maxLen, maxRootLen + len);
        // 以当前节点出发的最长路径
        maxRootLen = max(maxRootLen, len); 
    }
    return maxRootLen;
};
dfs(0);

                
            
        
浙公网安备 33010602011771号