1161 最大层内元素和-中等

题目:

给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层,而根节点的子节点位于第 2 层,依此类推。

请返回层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。

分析:

这里就是层序遍历,根据每层的结果更新最终的结果即可。

// date 2023/10/28
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func maxLevelSum(root *TreeNode) int {
    if root == nil {
        return 0
    }
    queue := make([]*TreeNode, 0, 16)
    queue = append(queue, root)
    n := len(queue)
    ls := 0 // level sum
    lsMax := math.Inf(-1)
    level, res := 1, 1
    for len(queue) != 0 {
        n = len(queue)
        ls = 0
        for i := 0; i < n; i++ {
            cur := queue[i]
            ls += cur.Val
            if cur.Left != nil {
                queue = append(queue, cur.Left)
            }
            if cur.Right != nil {
                queue = append(queue, cur.Right)
            }
        }
        if float64(ls) > lsMax {
            lsMax = float64(ls)
            res = level
        }
        queue = queue[n:]
        level++
    }
    return res
}

最后更新于