自学内容网 自学内容网

力扣515:在每个树行中找最大值

给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。

示例1:

输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]

示例2:

输入: root = [1,2,3]
输出: [1,3]

提示:

  • 二叉树的节点个数的范围是 [0,104]
  • -231 <= Node.val <= 231 - 1

代码:

/**
 * 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_SIZE 10000
int* largestValues(struct TreeNode* root, int* returnSize) {
    *returnSize=0;//表示层次遍历的层次,也可以看做最后输出的最大值有多少个
    if(root==NULL){
        return NULL;
    }
    int *result=(int *)malloc(sizeof(int*)*MAX_SIZE);//存放输出的最大值数组
    struct TreeNode *Queue[MAX_SIZE];
    int rear=0,front=0;
    Queue[rear++]=root;
    while(front<rear){
    int temp=rear;
    int max=INT_MIN;
    while(front<temp){
    struct TreeNode *p;
    p=Queue[front++];
    max=fmax(max,p->val);
    if(p->left!=NULL) Queue[rear++]=p->left;
    if(p->right!=NULL) Queue[rear++]=p->right;
}
result[(*returnSize)++]=max;
} 
return result;
}


原文地址:https://blog.csdn.net/m0_56332819/article/details/143747387

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!