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
    7. class Solution:
    8. def levelOrder(self, root: TreeNode) -> List[List[int]]:
    9. # Most efficient way
    10. if root == None:
    11. return []
    12. result = []
    13. queue = [root]
    14. while queue:
    15. size = len(queue)
    16. level = []
    17. for i in range(size):
    18. node = queue.pop(0)
    19. level.append(node.val)
    20. if node.left:
    21. queue.append(node.left)
    22. if node.right:
    23. queue.append(node.right)
    24. result.append(level)
    25. return result