515. Find Largest Value in Each Tree Row

Medium
Given the root of a binary tree, return an array of the largest value in each row of the tree (0-indexed).
Example 1:
​
​
Input: root = [1,3,2,5,3,null,9]
Output:
[1,3,9]
Example 2:
Input: root = [1,2,3]
Output:
[1,3]
Constraints:
  • The number of nodes in the tree will be in the range [0, 104].
  • -231 <= Node.val <= 231 - 1

解題

/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func largestValues(root *TreeNode) []int {
res := make([]int, 0)
​
var helper func(*TreeNode, int)
helper = func(root *TreeNode, level int) {
if root == nil { return }
if len(res) == level {
res = append(res, root.Val)
} else {
if root.Val > res[level] {
res[level] = root.Val
}
}
​
helper(root.Left, level + 1)
helper(root.Right, level + 1)
}
​
helper(root, 0)
​
return res
}
​