From c61b4932ce64f34f6cc3cd4404b97c3cb1da5fb7 Mon Sep 17 00:00:00 2001 From: bumpsoo Date: Wed, 25 Dec 2024 19:58:20 +0900 Subject: [PATCH] https://leetcode.com/problems/find-largest-value-in-each-tree-row --- medium/find_largest_value_in_each_tree_row.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 medium/find_largest_value_in_each_tree_row.py 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 +