From 6af0b02ee750c5c9365a147d6150d9cbe0fb0ece Mon Sep 17 00:00:00 2001 From: Chandrakant Venisetty Date: Mon, 3 Jun 2024 13:09:10 +0530 Subject: [PATCH] Update Binary Tree Level Order Traversal (BFS) - Leetcode 102.py We can avoid the internal for loop by appending None after completion of each level. This has better run time complexity --- ...el Order Traversal (BFS) - Leetcode 102.py | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) 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)