637.二叉树的层平均值
double* averageOfLevels(struct TreeNode* root, int* returnSize){
*returnSize=0;
if(root==NULL){
return NULL;
}
double* returnNums = (int*)malloc(sizeof(int)*10001);
struct TreeNode* queue[10001];
int front=0,rear=0;
struct TreeNode* cur;
queue[rear++]=root;
while(front!=rear){
int colSize = 0;
int last = rear;
double sum = 0;
while(front<last){
cur = queue[front++];
sum+=cur->val;
colSize++;
if(cur->left){
queue[rear++]=cur->left;
}
if(cur->right){
queue[rear++]=cur->right;
}
}
returnNums[*returnSize]=sum/colSize;
(*returnSize)++;
}
return returnNums;
}
515.在每个树行中找最大值
int* largestValues(struct TreeNode* root, int* returnSize){
*returnSize=0;
if(root==NULL){
return NULL;
}
int* res=(int*)malloc(sizeof(int)*10000);
struct TreeNode* queue[10000];
int front=0,rear=0;
struct TreeNode* cur;
queue[rear++]=root;
while(front!=rear){
int last=rear;
int max=INT_MIN;
while(last>front){
cur=queue[front++];
if(cur->val>max){
max=cur->val;
}
if(cur->left){
queue[rear++]=cur->left;
}
if(cur->right){
queue[rear++]=cur->right;
}
}
res[*returnSize]=max;
(*returnSize)++;
}
return res;
}