515. 在每个树行中找最大值【二叉树】

515. 在每个树行中找最大值

515. 在每个树行中找最大值

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

示例1:

在这里插入图片描述

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

示例2:

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

提示:

  • 二叉树的节点个数的范围是 [ 0 , 1 0 4 ] [0,10^4] [0,104]
  • − 2 31 < = N o d e . v a l < = 2 31 − 1 -2^{31} <= Node.val <= 2^{31} - 1 231<=Node.val<=2311

解题思路

层序遍历之后,返回每层的最大值即可

Go代码

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func largestValues(root *TreeNode) []int {
    // 层序遍历之后,返回每层的最大值即可
    if root == nil {
        return []int{}
    }

    res := make([]int,0)
    queue := make([]*TreeNode,0)
    queue = append(queue,root)

    for len(queue) > 0 {
        queueSize := len(queue)
        curLevelRes := make([]int,0)
        for i := 0;i < queueSize;i++{
            curNode := queue[0]
            queue = queue[1:]
            curLevelRes = append(curLevelRes,curNode.Val)
            if curNode.Left != nil {
                queue = append(queue,curNode.Left)
            }
            if curNode.Right != nil {
                queue = append(queue,curNode.Right)
            }
        }
        // 只保留当前层最右边的元素,即当前层最后一个元素
        res = append(res,getMaxOfArr(curLevelRes))
    }

    return res
}

func getMaxOfArr(arr []int) int {
    maxVal := arr[0]
    for _,num:= range arr {
        if num > maxVal {
            maxVal = num
        }
    }
    
    return maxVal
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值