philosyang.com

199. Binary Tree Right Side View

 1# Definition for a binary tree node.
 2# class TreeNode:
 3#     def __init__(self, val=0, left=None, right=None):
 4#         self.val = val
 5#         self.left = left
 6#         self.right = right
 7class Solution:
 8    def rightSideView(self, root: Optional[TreeNode]) -> List[int]:
 9        # essentially the same as level-wise traversal but only append the last node of each level
10
11        if not root:
12            return []
13
14        dq = deque([root])
15        result = []
16
17        while dq:
18            level_result = []
19            for _ in range(len(dq)):
20                node = dq.popleft()
21                level_result.append(node.val)
22                if node.left:
23                    dq.append(node.left)
24                if node.right:
25                    dq.append(node.right)
26            result.append(level_result[-1])
27
28        return result

#Neetcode150 #Tree #Python