本文主要是介绍2024.2.23力扣每日一题——二叉树中的第 K 大层和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2024.2.23
- 题目来源
- 我的题解
- 方法一 层序遍历+排序
题目来源
力扣每日一题;题序:2583
我的题解
方法一 层序遍历+排序
先使用层序遍历计算每一层的和,然后将每一层的和进行排序。
时间复杂度:O(nlogn)。其中 n 是树中的节点数。广度优先搜索消耗 O(n),一次排序消耗 O(n×logn)。
空间复杂度:O(n)
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);
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~
这篇关于2024.2.23力扣每日一题——二叉树中的第 K 大层和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!