Leetcode_#637_二叉树的层平均值

原题:#637_二叉树的层平均值

  • 使用队列保存每一层的节点
  • 使用数组保存每一层的平均值
public List<Double> averageOfLevels(TreeNode root) {
        //创建一个数组放入平均值
        List<Double> ret = new ArrayList<>();
        if (root == null) return ret;
        //创建一个队列存放每一层的节点
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while (!queue.isEmpty()) {
            int len = queue.size();
            double sum = 0;
            for (int i =  0; i < len; i++) {    //当前层节点有多少个就遍历多少次
                TreeNode node = queue.poll();
                sum += node.val;
                if (node.left != null) queue.add(node.left);
                if (node.right != null) queue.add(node.right);
            }
            ret.add(sum/len);   //每一层的结果都放入数组容器
        }
        return ret;
    }
原创文章 50 获赞 1 访问量 2923

猜你喜欢

转载自blog.csdn.net/u014642412/article/details/105927391