2024.2.23
题目来源
我的题解
方法一 层序遍历+排序
先使用层序遍历计算每一层的和,然后将每一层的和进行排序。
时间复杂度 :O(nlogn)。其中 n 是树中的节点数。广度优先搜索消耗 O(n),一次排序消耗 O(n×logn)。
空间复杂度:O(n)
java
public long kthLargestLevelSum(TreeNode root, int k) {
Queue<TreeNode> queue=new LinkedList<>();
queue.offer(root);
List<Long> sum=new ArrayList<>();
while(!queue.isEmpty()){
int sz=queue.size();
long cur_sum=0;
for(int i=0;i<sz;i++){
TreeNode t=queue.poll();
cur_sum+=t.val;
if(t.left!=null){
queue.offer(t.left);
}
if(t.right!=null)
queue.offer(t.right);
}
sum.add(cur_sum);
}
if(sum.size()<k)
return -1;
sum.sort((a,b)->b.compareTo(a));
return sum.get(k-1);
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~