leetcode 第188场周赛 收集树上所有苹果的最少时间

解题思路:层序遍历树,从叶子结点逐层往上遍历,如果a->b,其中b节点有苹果,那么时间加一,然后令a节点也有苹果,这样就可以把所有有苹果的节点记录有且仅有一遍,因为收集之后还要返回,所以时间乘以二

class Solution:
    def minTime(self, n: int, edges: List[List[int]], hasApple: List[bool]) -> int:
        res = 0
        edges = sorted(edges, key=lambda x: x[0], reverse=True)
        print(edges)
        for x in edges:
            if hasApple[x[1]]:
                res += 1
                hasApple[x[0]] = True
        return res * 2
        

你可能感兴趣的:(数据结构与算法,#,周赛,leetcode,数据结构,树结构,python)