小工具知识网

当前位置: 首页 > 行业知识 > LeetCode 2583.二叉树中的第 K 大层和:层序遍历 + 排序

行业知识

LeetCode 2583.二叉树中的第 K 大层和:层序遍历 + 排序

2026-10-18 23:33:43 来源:互联网转载

【LetMeFly】2583.二叉树中的第 K 大层和:层序遍历 + 排序

力���题目链接:https://leetcode.cn/problems/kth-largest-sum-in-a-binary-tree/

给你一棵二叉树的根节点 root 和一个正整数 k 。

树中的 层和 是指 同一层 上节点值的总和。

返回树中第 k 大的层和(不一定不同)。如果树少于 k 层,则返回 -1 。

注意,如果两个节点与根节点的距离相同,则认为它们在同一层。

 

示例 1:

输入:root = [5,8,9,2,1,3,7,4,6], k = 2输出:13解释:树中每一层的层和分别是:- Level 1: 5- Level 2: 8 + 9 = 17- Level 3: 2 + 1 + 3 + 7 = 13- Level 4: 4 + 6 = 10第 2 大的层和等于 13 。

示例 2:

输入:root = [1,2,null,3], k = 1输出:3解释:最大的层和是 3 。

 

提示:

  • 树中的节点数为 n
  • 2 public: ll kthLargestLevelSum(TreeNode* root, int k) { vector ll cnt = 0; for (int _ = q.size(); _ 0; _--) { TreeNode* thisNode = q.front(); q.pop(); cnt += thisNode-val; if (thisNode-left) { q.push(thisNode-left); } if (thisNode-right) { q.push(thisNode-right); } } values.push_back(cnt); } sort(values.begin(), values.end()); return k > values.size() ? -1 : values[values.size() - k]; }};
    Python

    注意本题数据级别是 1 0 5 10^5 105,不能使用数组切片模拟队列的方式。

    # # Definition for a binary tree node.# class TreeNode:#     def __init__(self, val=0, left=None, right=None):#         self.val = val#         self.left = left#         self.right = rightclass Solution:    def kthLargestLevelSum(self, root: TreeNode, k: int) -> int:        values = []        q = [root]        while q:            cnt = 0            thisLayer = q            q = []            for thisNode in thisLayer:                cnt += thisNode.val                if thisNode.left:                    q.append(thisNode.left)                if thisNode.right:                    q.append(thisNode.right)            values.append(cnt)        values.sort()        return values[len(values) - k] if len(values) >= k else -1

    同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

    Tisfy:https://letmefly.blog.csdn.net/article/details/136252010

上一篇:如何找水晶方舟服务器?

下一篇:游戏dns服务器怎么设置?