This commit is contained in:
parent
2cfc402fdd
commit
9d128a5f16
1 changed files with 33 additions and 0 deletions
33
medium/binary_tree_right_side_view.py
Normal file
33
medium/binary_tree_right_side_view.py
Normal file
|
|
@ -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
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue