# https://leetcode.com/problems/find-largest-value-in-each-tree-row from typing import Deque, List, Optional, Tuple from collections import deque 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]: d: Deque[Tuple[TreeNode, int]] = deque() result: List[int] = [] if root is not None: d.append((root, 1)) while len(d) > 0: node, level = d.popleft() if len(result) < level: result.append(node.val) else: result[level - 1] = max(result[level - 1], node.val) if node.left is not None: d.append((node.left, level + 1)) if node.right is not None: d.append((node.right, level + 1)) return result