2024年2月19日 星期一

[637] Average of Levels in Binary Tree

有一陣子沒寫tree,很意外竟然自己寫出來XD (所以人家是easy XD!)
對於tree的深度沒有考慮清楚,如果是超級不balance那可能很歪,以上。

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
#define MAX(A,B) (A>B)?(A):(B)

int calculate(struct TreeNode* root, int level, double *ret, int *count)
{
if (root == NULL)
return level;
ret[level]+= root->val;
count[level]++;
int left = calculate(root->left, level+1, ret, count);
int right = calculate(root->right, level+1, ret, count);
return MAX(left, right);
}

double* averageOfLevels(struct TreeNode* root, int* returnSize) {
double *ret = calloc (10000, sizeof(double));
int *count = calloc (10000, sizeof(int));
int level = calculate(root, 0, ret, count);
for (int i=0;i<level;i++)
ret[i]/=count[i];
*returnSize = level;
return ret;
}

沒有留言:

張貼留言