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
}

Last updated