From 9d128a5f1676861cfda21ba6d63ee789c5a28cce Mon Sep 17 00:00:00 2001 From: bumpsoo Date: Sun, 8 Jun 2025 08:44:38 +0000 Subject: [PATCH] https://leetcode.com/problems/binary-tree-right-side-view --- medium/binary_tree_right_side_view.py | 33 +++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 medium/binary_tree_right_side_view.py diff --git a/medium/binary_tree_right_side_view.py b/medium/binary_tree_right_side_view.py new file mode 100644 index 0000000..c3c1e34 --- /dev/null +++ b/medium/binary_tree_right_side_view.py @@ -0,0 +1,33 @@ +# https://leetcode.com/problems/binary-tree-right-side-view + +from collections import deque +from typing import Deque, List, Optional, Set, Tuple + +class TreeNode: + def __init__(self, val=0, left=None, right=None): + self.val = val + self.left = left + self.right = right + +class Solution: + def rightSideView(self, root: Optional[TreeNode]) -> List[int]: + result: List[int] = [] + q: Deque[Tuple[TreeNode, int]] = deque() + levels: Set[int] = set() + + if root is None: + return result + + q.append((root, 0)) + while len(q) > 0: + (curr, curr_level) = q.popleft() + if curr_level not in levels: + levels.add(curr_level) + result.append(curr.val) + if curr.right is not None: + q.append((curr.right, curr_level + 1)) + if curr.left is not None: + q.append((curr.left, curr_level + 1)) + + return result +