这是树的第32篇算法,力扣链接。
给定一棵二叉树的根节点
root
,请找出该二叉树中每一层的最大值。示例1:
输入: root = [1,3,2,5,3,null,9] 输出: [1,3,9]
层级遍历似乎天生适合解这道题:
func largestValues(root *TreeNode) []int {
var result []int
if root == nil {
return result
}
stack := []*TreeNode{root}
for len(stack) > 0 {
var newStack []*TreeNode
max := stack[len(stack)-1].Val
for _, node := range stack {
if node.Val > max {
max = node.Val
}
if node.Left != nil {
newStack = append(newStack, node.Left)
}
if node.Right != nil {
newStack = append(newStack, node.Right)
}
}
stack = newStack
result = append(result, max)
}
return result
}