LeetCode 102: Binary Tree Level Order Traversal (my BFS solution)

Python Solution:

# 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
class Solution:
    def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        #1.recursion
        #2.queue BFS
        
        results = []
        if root==None:
            return results
        
        level = 0
        queue = deque([root])
        
        #level 0, current_level_length=1, results = [[3]], queue=[9,20]
        #level 1, current_level_length=2, results = [[3],[9,20]], queue=[15,7]
        #level 2, current_level_length=, results = [[3],[9,20],[15,7]], queue=[]
        
        while queue:

            current_level_length = len(queue)
            results.append([])
            
            for i in range(current_level_length):
                node = queue.popleft()
                # fulfill the current level
                results[level].append(node.val)
                
                # add child nodes of the current level in the queue for the next level
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            
            # go to next level
            level += 1
        return results
    
    #Time complexity: O(n)
    #Space complexity: O(n)

 

Time Complexity: O(n)

Space Complexity: O(n)


Feeling tired? You can also try our free online no-installation required casual games: Here Please consider to follow my youtube channel to support me: