leetcode 637. Average of Levels in Binary Tree
来源:互联网 发布:telnet连接到80端口 编辑:程序博客网 时间:2024/06/05 18:36
Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.
Example 1:
Input: 3 / \ 9 20 / \ 15 7Output: [3, 14.5, 11]Explanation:The average value of nodes on level 0 is 3, on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].
Note:
- The range of node's value is in the range of 32-bit signed integer.
package leetcode;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;public class Average_of_Levels_in_Binary_Tree_637 {public List<Double> averageOfLevels(TreeNode root) {List<Double> list=new ArrayList<Double>();if(root==null){return list;}Queue<TreeNode> queue=new LinkedList<TreeNode>();queue.offer(root);while(!queue.isEmpty()){int size=queue.size();long sum=0;for(int i=0;i<size;i++){TreeNode node=queue.poll();sum+=node.val;if(node.left!=null){queue.offer(node.left);}if(node.right!=null){queue.offer(node.right);}}double avg=(double)sum/size;list.add(avg);}return list;}public static void main(String[] args) {// TODO Auto-generated method stubAverage_of_Levels_in_Binary_Tree_637 a=new Average_of_Levels_in_Binary_Tree_637();TreeNode root=new TreeNode(2147483647);root.left=new TreeNode(2147483647);root.right=new TreeNode(2147483647);List<Double> list=a.averageOfLevels(root);for(Double d:list){System.out.print(d+" ");}}}大神DFS解法见:https://leetcode.com/problems/average-of-levels-in-binary-tree/#/solution
其中 i 代表层数。sum这个list中,sum.get(0)代表0层数的和。count这个list中,count.get(0)代表0层数的node个数。
public class Solution { public List < Double > averageOfLevels(TreeNode root) { List < Integer > count = new ArrayList < > (); List < Double > res = new ArrayList < > (); average(root, 0, res, count); for (int i = 0; i < res.size(); i++) res.set(i, res.get(i) / count.get(i)); return res; } public void average(TreeNode t, int i, List < Double > sum, List < Integer > count) { if (t == null) return; if (i < sum.size()) { sum.set(i, sum.get(i) + t.val); count.set(i, count.get(i) + 1); } else { sum.add(1.0 * t.val); count.add(1); } average(t.left, i + 1, sum, count); average(t.right, i + 1, sum, count); }}
阅读全文
0 0
- [Leetcode] Binary tree-- 637. Average of Levels in Binary Tree
- LeetCode average Of Levels in Binary Tree
- Average of Levels in Binary Tree(leetcode)
- LeetCode 637. Average of Levels in Binary Tree
- [LeetCode]637. Average of Levels in Binary Tree
- leetcode 637. Average of Levels in Binary Tree
- [LeetCode]637. Average of Levels in Binary Tree
- 【LeetCode】637. Average of Levels in Binary Tree
- leetcode 637. Average of Levels in Binary Tree
- leetcode 637. Average of Levels in Binary Tree
- [LeetCode] 637. Average of Levels in Binary Tree
- leetcode 637. Average of Levels in Binary Tree
- <leetcode>637. Average of Levels in Binary Tree
- LeetCode 637. Average of Levels in Binary Tree
- [LeetCode] 637.Average of Levels in Binary Tree
- 637. Average of Levels in Binary Tree
- 637. Average of Levels in Binary Tree
- 637. Average of Levels in Binary Tree
- iOS 修改UIWebView的UserAgent
- Android性能优化之必备篇
- LINUX下TOMCAT-7.0.63的安装和配置
- VS2015 配置opencv3.0
- c++之顶层const和底层const的区别
- leetcode 637. Average of Levels in Binary Tree
- Redis Cluster实现原理
- Python--matplotlib绘图可视化知识点整理
- 目标检测算法(二)——具体原理以及实现
- WUST OJ 1187 今年暑假不AC(贪心算法)
- 用Hexo+Github 搭建属于自己的博客 详细步骤
- HDU 1232 畅通工程【并查集】
- SW板子 hdu3691(全局最小割 o(n^3)
- vue中的懒加载和按需加载