zoukankan      html  css  js  c++  java
  • Average of Levels in Binary Tree

    https://leetcode.com/problems/average-of-levels-in-binary-tree/#/description

    求出二叉树每层的均值,这个就是层序遍历的变种,没什么好说的。只是test case 里有INT_MAX-1,这个就很烦了,我没想到什么好办法,就把数字全都专程double 来处理了。

    思路用dfs 或者bfs 都可以,这里我采用了dfs,有个坑是给vector 赋值的时候是拷贝的,所以尽量用指针

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        void dfsIter(TreeNode *root, int level, vector<vector<double>*>& rets) {
            if (root == nullptr) return;
    
            vector<double> *l;
            if (rets.size() <= level) {
                l = new vector<double>();
                rets.push_back(l);
            } else {
                l = rets.at(level);
            }
    
            l->push_back(root->val);
            dfsIter(root->right, level+1, rets);
            dfsIter(root->left, level+1, rets);
        }
        vector<double> averageOfLevels(TreeNode* root) {
            if (root == nullptr) return vector<double>();
            vector<vector<double>*> levels;
            vector<double> result;
            dfsIter(root, 0, levels);
            for (auto level : levels) {
                double sum = 0;
                for (int n : *level) {
                    sum += (double)n;
                }
                result.push_back((double)sum / (double)level->size());
            }
        
            return result;
        }
    };
  • 相关阅读:
    SQL Server 2005高可用性之镜像功能
    Linux的常见问题解答和管理技巧
    安装sharepoint server 2007步骤
    CISCO 中对OSI的解释
    CISCO 2600 密码恢复
    三层交换机与路由器的比较
    PHP的注释
    php的变量、常量和数据类型
    操作符与控制结构
    【1】淘宝sdk装修入门引言
  • 原文地址:https://www.cnblogs.com/agentgamer/p/7212050.html
Copyright © 2011-2022 走看看