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