LeetCode 第515题(C)
废话绝对不说,但还是忍不住想打两个字,就写吧,正香呐!!!C版,主要是搞清题意…Orz,论看清题意的重要性,要注意参数returnSize指的是数组中元素的个数,也即树的深度。还可以在前面直接使用递归法求出书的深度来替代maxSize,不过考虑到复杂性其实也就没什么必要了,要AC这道题maxSize取到10000就差不多了,前面搞了个1000结果小了 goodbye,2019/4/28/20:51
力扣题目链接
结构
/*
* 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().
*/
函数
int* largestValues(struct TreeNode* root, int* returnSize){
const int maxSize=65535;
struct TreeNode **queue = (struct TreeNode **)malloc(maxSize*sizeof(struct TreeNode *));
int front=0,rear=0,middle;
int depth=0,i=0;
int arry[maxSize];
if(root!=NULL)
queue[rear++]=root;
middle = rear;
while(front!=rear){
int temp=queue[front]->val;
for(;front!=middle;++front){
if(queue[front]->left!=NULL)
queue[rear++]=queue[front]->left;
if(queue[front]->right!=NULL)
queue[rear++]=queue[front]->right;
if(temp < queue[front]->val)
temp = queue[front]->val;
}
middle = rear;
arry[depth++]=temp;
}
free(queue);
*returnSize = depth;
int *result = (int *)malloc(depth*sizeof(int));
for(;i<depth;i++){
result[i] = arry[i];
}
return result;
}