This BFS traversal uses a list comprehension to traverse a tree
def levelOrderBottom(self, root):
    res, queue = [], [root]
    while queue:
        res.append([node.val for node in queue if node])
        queue = [child for node in queue if node for child in (node.left, node.right)]
    return res[-2::-1]
For the
  res.append([node.val for node in queue if node])
I know that can be done iterative as
  for node in queue:
      if node:
          res.append([node.val])
but I can't quite wrap my head around what this code
  queue = [child for node in queue if node for child in (node.left, node.right)]
is doing iteratively, nor replicate it in a non list comprehension format
 
    