--- title: '102. Binary Tree Level Order Traversal' description: Given the root of a binary tree, return the level order traversal of its nodes' values. (i.e., from left to right, level by level) sidebar: label: 'Binary Tree Level Order Traversal' badge: 'Medium' --- Tree BFS ### Example 1: - Input: `root = [3,9,20,null,null,15,7]` - Output: `[[3],[9,20],[15,7]]` ### Example 2: - Input: `root = [1]` - Output: `[[1]]` ### Example 3: - Input: `root = []` - Output: `[]` ### Constraints: - The number of nodes in the tree is in the range [0, 2000]. - `-1000 <= Node.val <= 1000` ## Solution ```py # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right from collections import deque class Solution: # T: O(n) S: O(n) def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: res = [] q = deque() q.append(root) while q: qLen = len(q) level = [] for i in range(qLen): node = q.popleft() if node: level.append(node.val) q.append(node.left) q.append(node.right) if level: res.append(level) return res ```