diff --git a/medium/find_largest_value_in_each_tree_row.py b/medium/find_largest_value_in_each_tree_row.py new file mode 100644 index 0000000..72888ea --- /dev/null +++ b/medium/find_largest_value_in_each_tree_row.py @@ -0,0 +1,28 @@ +# 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 +