from collections import deque
from structures import build_tree

def right_side_view(root):
    if root is None:
        return []
    queue, output = deque([root]), []
    while queue:
        width = len(queue)
        for i in range(width):
            node = queue.popleft()
            if i == width - 1:
                output.append(node.val)
            for child in (node.left, node.right):
                if child is not None:
                    queue.append(child)
    return output
