LeetCode 637. Average of Levels in Binary Tree

637. Average of Levels in Binary Tree

Description

Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.

Example:

Input:
    3
   / \
  9  20
    /  \
   15   7
Output: [3, 14.5, 11]

Explanation:
The average value of nodes on level 0 is 3,  on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].

Solution

//题目意思就是统计二叉树每一层的平均数
//我的做法是利用k标记层数,中序遍历的同时更新每一层的节点数和总和,最后返回平均值数组,代码如下

double* averageOfLevels(struct TreeNode* root, int* returnSize) {
    double *sum = (double *)malloc(sizeof(double) * 1000000);
    memset(sum,0,sizeof(sum));
    int num[10000] = {0};
    *returnSize = 0;
    getArray(root,returnSize,1,sum,num);
    for (int i = 0;i < *returnSize;i++) {
        sum[i] /= num[i];
    }
    return sum;
}

void getArray(struct TreeNode* root,int *returnSize,int k,double *sum,int *num)
{
    if (!root) 
        return;
    if (k > *returnSize) 
        *returnSize = k;
    sum[k - 1] += root->val;
    num[k - 1]++;
    getArray(root->left,returnSize,k + 1,sum,num);
    getArray(root->right,returnSize,k + 1,sum,num);
    return ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值