LeetCode 310. Minimum Height Trees (DFS)

题目

给你一个无向无环图,这个图的任何一个节点都可以当成一个树的根节点。让你找到形成的树的高度最小的那几个根节点。

首先,这个根节点要么只有1个,要么只有2个。
而且就在图中最长的一条路径上,如果这个路径上的节点数为偶数,那就是2个,否则就是1个

那么怎么找这条最长路径呢?首先从任意 一个点出发,找到离它最远的点t1,然后从t1出发找到离它最远的点t2,t1和t2就是最长的路径上的两个端点

class Solution {
public:
    
vector edge[100005];
int vis[100005];
int t1, t2;
int d1, d2;
int path[100005];
int pos;
int ans1, ans2;
vector findMinHeightTrees(int n, vector>& edges) {

    vector ans;
    if (edges.size() == 0)
        return ans;
    
    for(int i=0;i

你可能感兴趣的:(LeetCode 310. Minimum Height Trees (DFS))