[LeetCode]637. Average of Levels in Binary Tree

来源:互联网 发布:米兔源码 编辑:程序博客网 时间:2024/05/17 05:04

[LeetCode]637. Average of Levels in Binary Tree

题目描述

这里写图片描述

思路

实际上是树的层次遍历
递归写法参数中加入层数即可

代码

#include <iostream>#include <vector>using namespace std;struct TreeNode {    int val;    TreeNode* left;    TreeNode* right;    TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution {public:    void averageOfLevels(TreeNode* root, int level, vector<double>& sum, vector<double>& count) {        if (root == NULL) return;        if (level < sum.size()) {            sum[level] += root->val;            count[level] += 1;        }        else {            sum.push_back(root->val);            count.push_back(1);        }        averageOfLevels(root->left, level + 1, sum, count);        averageOfLevels(root->right, level + 1, sum, count);    }    vector<double> averageOfLevels(TreeNode* root) {        vector<double> sum, count;        averageOfLevels(root, 0, sum, count);        vector<double> res(sum.size(), 0);        for (int i = 0; i < res.size(); ++i)            res[i] = sum[i] / count[i];        return res;    }};int main() {    vector<double> res;    TreeNode* t1 = new TreeNode(3);    TreeNode* t2 = new TreeNode(9);    TreeNode* t3 = new TreeNode(20);    TreeNode* t4 = new TreeNode(15);    TreeNode* t5 = new TreeNode(7);    t1->left = t2;    t1->right = t3;    t2->left = t4;    t3->right = t5;    Solution s;    res = s.averageOfLevels(t1);    for (double num : res)        cout << num << ' ';    cout << endl;    system("pause");}
阅读全文
0 0