BFS列表理解迭代选项

时间:2019-05-25 17:57:10

标签: python data-structures

此BFS遍历使用列表理解来遍历树

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]

对于

  res.append([node.val for node in queue if node])

我知道可以像这样

  for node in queue:
      if node:
          res.append([node.val])

但是我不太清楚这段代码是什么

  queue = [child for node in queue if node for child in (node.left, node.right)]

反复进行操作,也不以非列表理解格式进行复制

1 个答案:

答案 0 :(得分:1)

嵌套列表的理解以相同的顺序转换为嵌套的for循环。

/etc/systemd/system

成为

queue = [child for node in queue if node for child in (node.left, node.right)]