我在leetcode上看到了以下解决方案:
class Solution:
def levelOrder(self, root):
"""
:type root: Node
:rtype: List[List[int]]
"""
if root is None:
return []
q, res = [root], []
q1 = []
while q:
res.append([node.val for node in q])
q = [child for node in q for child in node.children]
return res
Run Code Online (Sandbox Code Playgroud)
[child for node in q for child in node.children]
工作怎么样?当你把它放在for循环语句之前时,孩子的意思是什么?
这是一个嵌套的列表理解.
q = [child for node in q for child in node.children]
Run Code Online (Sandbox Code Playgroud)
相当于:
tmp = []
for node in q:
for child in node.children:
tmp.append(child)
q = tmp
Run Code Online (Sandbox Code Playgroud)