lc-go/solutions/11/q1161/solution.go
2026-01-07 18:04:39 +09:00

43 lines
779 B
Go

package q1161
import "math"
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func maxLevelSum(root *TreeNode) int {
type qElem struct {
node *TreeNode
level int
}
queue := make([]qElem, 0, 256)
queue = append(queue, qElem{root, 1})
maxSum, maxLvl := math.MinInt, 0
sum, lvl := 0, 1
for ; len(queue) > 0; queue = queue[1:] {
cur := &queue[0]
if cur.level != lvl {
if sum > maxSum {
maxSum, maxLvl = sum, lvl
}
sum, lvl = 0, cur.level
}
sum += cur.node.Val
if cur.node.Left != nil {
queue = append(queue, qElem{cur.node.Left, cur.level + 1})
}
if cur.node.Right != nil {
queue = append(queue, qElem{cur.node.Right, cur.level + 1})
}
}
if sum > maxSum {
return lvl
}
return maxLvl
}
var _ = maxLevelSum