<leetcode>637. Average of Levels in Binary Tree

来源:互联网 发布:中国人 知乎 编辑:程序博客网 时间:2024/06/04 19:35

637. Average of Levels in Binary Tree

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:

  1. The range of node's value is in the range of 32-bit signed integer.

题目大意:就是二叉树的同层级的结点的值的和求平均值

方法:一开始一直想着中序,左序,右序遍历,就想着拷贝一个相同的二叉树,想想很麻烦,就觉得应该是方法错误了。看了discuss的提示才想到BFS和DFS,,,看了二叉树都忘了、、这题BFS,存在队列里,就可以了


/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public List<Double> averageOfLevels(TreeNode root) {        List < Double > res = new ArrayList < > ();        Queue < TreeNode > queue = new LinkedList < > ();        queue.add(root);        while (!queue.isEmpty()) {            long sum = 0, count = 0;            Queue < TreeNode > temp = new LinkedList < > ();            while (!queue.isEmpty()) {                TreeNode n = queue.remove();                sum += n.val;                count++;                if (n.left != null)                    temp.add(n.left);                if (n.right != null)                    temp.add(n.right);            }            queue = temp;            res.add((double)sum/ count);        }        return res;    }}


阅读全文
0 0
原创粉丝点击