python, very easy to understand queue solution
```python\n\nfrom collections import deque\nclass Solution:\n    def levelOrder(self, root):\n        if not root: return [] #base case \n        res = []\n    
```python\n\nfrom collections import deque\nclass Solution:\n    def levelOrder(self, root):\n        if not root: return [] #base case \n        res = []\n        #queue to colloct all the nodes\n        queue = deque([root]) \n\n        while queue:\n            level_vals = [] #hold the values at the current level.\n            for _ in range(len(queue)): #evalute once before execution enter the loop\n                node = queue.popleft()\n                if node.left:\n                    queue.append(node.left)\n                if node.right:\n                    queue.append(node.right)\n                level_vals.append(node.val)\n            res.append(level_vals)\n        return res
['Depth-First Search', 'Breadth-First Search', 'Python']