LC 0107 [M] Binary Tree Level Order Traversal II - ALawliet/algorithms GitHub Wiki

class Solution:
    def levelOrderBottom(self, root: Optional[TreeNode]) -> List[List[int]]:
        if not root: return []
        
        Q = deque([root])        
        levels = deque()

        while Q:
            level = []

            for _ in range(len(Q)):
                node = Q.popleft()
                
                level.append(node.val)
                
                if node.left:
                    Q.append(node.left)
                    
                if node.right:
                    Q.append(node.right)
                    
            levels.appendleft(level)
            
        return levels