class Solution:
    def levelOrderBottom(self , root: TreeNode) -> List[List[int]]:
        # write code here
        queue = [root]
        len_q = len(queue)  
        res = []
        while queue:
            tmp = []
            for _ in range(len_q):
                node = queue.pop(0)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
                tmp.append(node.val)
            len_q = len(queue)
            res.append(tmp)
        res.reverse()
        return res