diff --git a/Binary Tree Level Order Traversal (BFS) - Leetcode 102.py b/Binary Tree Level Order Traversal (BFS) - Leetcode 102.py index 8212bcf..cfc2516 100644 --- a/Binary Tree Level Order Traversal (BFS) - Leetcode 102.py +++ b/Binary Tree Level Order Traversal (BFS) - Leetcode 102.py @@ -5,20 +5,24 @@ def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: queue = deque() queue.append(root) + queue.append(None) ans = [] + level = [] while queue: - level = [] - n = len(queue) - for i in range(n): - node = queue.popleft() + node = queue.popleft() + if node: level.append(node.val) - if node.left: queue.append(node.left) if node.right: queue.append(node.right) - - ans.append(level) - + else: + # Encountering None indicates that level is complete + if level: + ans.append(level) + level = [] + if len(queue) != 0: + queue.append(None) + return ans # Time Complexity: O(n)