Leetcode 310. Minimum Height Trees
题目
For an undirected graph with tree characteristics, we can choose any node as the root. The result graph is then a rooted tree. Among all possible rooted trees, those with minimum height are called minimum height trees (MHTs). Given such a graph, write a function to find all the MHTs and return a list of their root labels.Format
The graph contains n nodes which are labeled from 0 to n - 1. You will be given the number n and a list of undirected edges (each edge is a pair of labels).You can assume that no duplicate edges will appear in edges. Since all edges are undirected, [0, 1] is the same as [1, 0] and thus will not appear together in edges.
Note:
According to the definition of tree on Wikipedia: “a tree is an undirected graph in which any two vertices are connected by exactly one path. In other words, any connected graph without simple cycles is a tree.”
The height of a rooted tree is the number of edges on the longest downward path between the root and a leaf.
解法:拓扑排序+BFS
首先简单分析一下这个题目。题目给定的是一个无向图,要我们求得是以某个节点构成的树(不一定是二叉树)的最低高度。那么其实换句话说想让我们找的是给定无向图最中心的点。因为最中心的点和图中任意一个点的最远距离最小,以这个中心点为root构成的树的节点也就会最小。可以利用拓扑排序的思想
这个题目值得注意的一点是,最后形成的这个root list一定只会是1或2
解题流程: