跳到主要内容

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]