在每个树行中找最大值

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;    
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值