2583.二叉树中的第K大层和
链接:2583.二叉树中的第K大层和
难度:Medium
标签:树、广度优先搜索、二叉树、排序
简介:给你一棵二叉树的根节点 root 和一个正整数 k 。树中的 层和 是指 同一层 上节点值的总和。返回树中第 k 大的层和(不一定不同)。如果树少于 k 层,则返回 -1 。。
题解 1 - python
- 编辑时间:2024-02-23
- 执行用时:267ms
- 内存消耗:51.8MB
- 编程语言:python
- 解法介绍:bfs。
class Solution:
    def kthLargestLevelSum(self, root: Optional[TreeNode], k: int) -> int:
        if not root: return []
        q = deque() 
        q.append(root)
        size = 1
        sums = [root.val]
        while q:
            node = q.popleft()
            if node.left: q.append(node.left)
            if node.right: q.append(node.right)
            size -= 1
            if size == 0:
                size = len(q)
                if q: sums.append(sum(node.val for node in q))
        if len(sums) < k: return -1
        return sorted(sums)[-k]