美文网首页
***310. Minimum Height Trees [Me

***310. Minimum Height Trees [Me

作者: 一个想当大佬的菜鸡 | 来源:发表于2019-08-07 13:32 被阅读0次

310. Minimum Height Trees


310. Minimum Height Trees

方法一:
通过BFS找到最长的路径,返回中间的节点,找最长路径的方法:先从任意一点出发,找到最远的节点,然后从最远的节点开始,找最长的路径。

class Solution(object):
    def findMinHeightTrees(self, n, edges):
        """
        :type n: int
        :type edges: List[List[int]]
        :rtype: List[int]
        """
        import collections
        adjacency = collections.defaultdict(list)
        for i, j in edges:
            adjacency[i].append(j)
            adjacency[j].append(i)
        seen = [False] * n
        seen[0] = True
        qu = [0]
        lastNode = -1
        while qu:
            node = qu.pop(0)
            lastNode = node
            if node in adjacency and not all(seen):
                for nextnode in adjacency[node]:
                    if seen[nextnode] == False:
                        seen[nextnode] = True
                        qu.append(nextnode)
        seen = [False] * n
        seen[lastNode] = True
        qu = [[lastNode,[lastNode]]]
        while qu:
            node, path = qu.pop(0)
            finalPath = path
            if node in adjacency and not all(seen):
                for nextnode in adjacency[node]:
                    if seen[nextnode] == False:
                        seen[nextnode] = True
                        qu.append([nextnode,path+[nextnode]])
        m = len(finalPath)
        return finalPath[(m-1)//2:m//2+1]

方法二

相关文章

网友评论

      本文标题:***310. Minimum Height Trees [Me

      本文链接:https://www.haomeiwen.com/subject/rfhodctx.html