class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
result = []
q = deque([root])
while q:
current_level = []
for _ in range(len(q)):
head = q.popleft()
current_level.append(head.val)
if head.left:
q.append(head.left)
if head.right:
q.append(head.right)
result.append(current_level)
return result