LC 0199 [M] Binary Tree Right Side View - ALawliet/algorithms GitHub Wiki
level-order traversal BFS and just append the rightmost [-1] node at each level
class Solution:
def rightSideView(self, root: TreeNode) -> List[int]:
if not root: return [] # remember the empty case
res = []
Q = deque([root])
while Q:
level = []
for _ in range(len(Q)):
node = Q.popleft()
level.append(node.val)
if node.left:
Q.append(node.left)
if node.right:
Q.append(node.right)
res.append(level[-1])
return res
you actually don't need to store the whole level because the rightmost is always the last one the queue, which is the last one in the level in each iteration of the for loop
class Solution:
def rightSideView(self, root: TreeNode) -> List[int]:
if not root: return []
res = []
Q = deque([root])
while Q:
last_val = None
for _ in range(len(Q)):
node = Q.popleft()
last_val = node.val
if node.left: Q.append(node.left)
if node.right: Q.append(node.right)
res.append(last_val)
return res