leetpycode/medium/find_largest_value_in_each_tree_row.py

28 lines
944 B
Python

# 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