zoukankan      html  css  js  c++  java
  • 637. 二叉树的层平均值

    637. 二叉树的层平均值

    题目链接:637. 二叉树的层平均值(简单)

    题目描述

    给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。

    示例 1:

    输入:
      3
      / \
    9 20
      / \
      15   7
    输出:[3, 14.5, 11]
    解释:
    第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。

    提示:

    • 节点值的范围在32位有符号整数范围内。

    题解

    思路:对数进行层次遍历,再求每一层节点的和,除以每一层节点个数即为平均值。

    代码(C++):

    struct TreeNode {
        int val;
        TreeNode* left;
        TreeNode* right;
        TreeNode(int value) : val(value), left(nullptr), right(nullptr) {}
    };
    ​
    class Solution {
    public:
        vector<double> averageOfLevels(TreeNode* root) {
            queue<TreeNode*> que;
            vector<double> result;
            if (root != nullptr) que.push(root);
            while (!que.empty()) {
                int size = que.size();
                double sum = 0;
                for (int i = 0; i < size; i++) {
                    TreeNode* node = que.front();
                    que.pop();
                    sum += node->val;
                    if (size - 1 == i) result.push_back(sum/size);
                    if (node->left) que.push(node->left);
                    if (node->right) que.push(node->right);
                }
            }
            return result;
        }
    };

    代码(Java):

        public List<Double> averageOfLevels(TreeNode root) {
            Deque<TreeNode> que = new LinkedList<>();
            List<Double> result = new ArrayList<>();
    ​
            if (root != null) que.offer(root);
    ​
            while (!que.isEmpty()) {
                int size = que.size();
                double sum = 0.0;
                for (int i = 0; i < size; i++) {
                    TreeNode node = que.poll();
                    sum += node.val;
                    if (size - 1 == i) result.add(sum/size);
                    if (node.left != null) que.offer(node.left);
                    if (node.right != null) que.offer(node.right);
                }
            }
    ​
            return result;
        }

    分析:

    • 时间复杂度:O(N)

    • 空间复杂度:O(N)

     
  • 相关阅读:
    MySql 有用的函数
    mysql 触发器
    java之switch语句
    MaxAlertView 强大的弹框试图
    AVMoviePlayer 视频播放器
    Mac下不能安装第三方下载软件
    HTTPS链式编程——AFNetworking 3.0
    iOS推送证书生成pem文件(详细步骤)
    iOS成长之路-使用系统默认声音、震动
    iOS 怎么自定制推送声音呢?(APP运行时和APP进入后台时)
  • 原文地址:https://www.cnblogs.com/wltree/p/15610566.html
Copyright © 2011-2022 走看看