from collections import deque
from structures import build_tree

def level_order(root):
    if root is None:
        return []
    queue, output = deque([root]), []
    while queue:
        level = []
        width = len(queue)
        for _ in range(width):
            node = queue.popleft()
            level.append(node.val)
            if node.left is not None:
                queue.append(node.left)
            if node.right is not None:
                queue.append(node.right)
        output.append(level)
    return output
