Day125 | 灵神 | 二叉树 | 二叉树中的第K大层和

2583.二叉树中的第K大层和

2583. 二叉树中的第 K 大层和 - 力扣(LeetCode)

思路:

把每层的结果都放到一个vector数组里面,然后排序这个vector数组,返回第K大的元素即可

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {
public:
long long kthLargestLevelSum(TreeNode* root, int k) {
vector<long long> res;
queue<TreeNode *> q;
if(root==nullptr)
return 0;
q.push(root);
while(!q.empty())
{
int size=q.size();
long long path=0;
for(int i=0;i<size;i++)
{
TreeNode *t=q.front();
q.pop();
path+=t->val;
if(t->left)
q.push(t->left);
if(t->right)
q.push(t->right);
}
res.push_back(path);
}
sort(res.begin(),res.end());
if(res.size()>=k)
return res[res.size()-k];
return -1;
}
};