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: