LC515 - Find Largest Value in Each TreeRow

Description

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

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# O(n) time | O(n) space
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def largestValues(self, root: Optional[TreeNode]) -> List[int]:
if root is None:
return []

queue = collections.deque([root])
ans = []
while queue:
l = len(queue)
maxi = float('-inf')
for i in range(l):
pop_node = queue.popleft()
maxi = max(maxi, pop_node.val)
if pop_node.left:
queue.append(pop_node.left)
if pop_node.right:
queue.append(pop_node.right)
ans.append(maxi)
return ans