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