【LeetCode】637. 두 갈래 나무의 층 평균치

8230 단어 LeetCode
제목 링크:https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/description/

제목 설명


비공 두 갈래 나무를 정하고 각 층 노드의 평균값으로 구성된 그룹을 되돌려줍니다.

예제


입력: 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> vecAvg;
            if(!root) return vecAvg;
            
            // res 
            vector<vector<int>> res;
            queue<TreeNode*> nodeQueue;// 
            nodeQueue.push(root);
            while(!nodeQueue.empty()){
                int size=nodeQueue.size();
                vector<int> resTemp;
                while(size--){
                    TreeNode* pointer=nodeQueue.front();// 
                    resTemp.push_back(pointer->val);// 
                    nodeQueue.pop();// 
                    if (pointer->left) nodeQueue.push(pointer->left);// 
                    if (pointer->right) nodeQueue.push(pointer->right);           
                }
                res.push_back(resTemp);
            }
            // 
            for (int i=0;i<res.size();i++){
                double avg=0;
                for (int j=0;j<res[i].size();j++)
                    avg+=res[i][j];
                avg/=res[i].size();
                vecAvg.push_back(avg);
            }
            return vecAvg;
            
        }
    };
    

    좋은 웹페이지 즐겨찾기