• [LeetCode]637. 二叉树的层平均值


    题目


    给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.
    
    示例 1:
    
    输入:
        3
       / 
      9  20
        /  
       15   7
    输出: [3, 14.5, 11]
    解释:
    第0层的平均值是 3,  第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].
    注意:
    
    节点值的范围在32位有符号整数范围内。

    代码


    /**
     * 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:
        vector<double> averageOfLevels(TreeNode* root) {
            vector<double> results;
            queue<TreeNode*> que;
            que.push(root);
            int oldNodeCount=1;
            int levelCount=1;
            int newNodeCount=0;
            double levelAverage=0.0;
            while(que.size()!=0)
            {
                TreeNode* node=que.front();
                que.pop();
                oldNodeCount--;
                levelAverage+=node->val;
                if(node->left!=NULL)
                {
                    que.push(node->left);
                    newNodeCount++;
                }
                if(node->right!=NULL)
                {
                    que.push(node->right);
                    newNodeCount++;
                }
                if(oldNodeCount==0)
                {
                    results.push_back(levelAverage/levelCount);
                    levelCount=newNodeCount;
                    oldNodeCount=newNodeCount;
                    newNodeCount=0;
                    levelAverage=0.0;
                }
            }
            return results;
        }
    };

    思路


      该解法基于层次遍历,我的思路是用一个辅助队列来保存结点,用两个变量来保存当前层的结点个数和下一层的结点个数。每次遍历队列头结点时当前结点个数-1,并且遍历该结点的子节点,非空的话加入队列并且下一层结点个数+1,当当前层结点个数为0时说明当前层遍历完成,则下一层结点个数变为当前层结点个数,下一层结点个数清0,继续遍历,直到队列中元素个数为0。

    https://github.com/li-zheng-hao
  • 相关阅读:
    一对一关联映射
    hibernate 中的 lazy=”proxy” 和 lazy=”no-proxy” 的区别
    Hibernate 延迟加载和立即加载
    hibernate inverse属性的作用
    Hibernate一对多关联
    Hibernate双向多对多关联
    SQL编程
    XML(DOM解析)
    UDP模式聊天
    Thread对象的yield(),wait(),notify(),notifyall()
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053687.html
Copyright © 2020-2023  润新知