过队列的方式实现层序遍历,层序遍历与 BFS的不同点在于,层序遍历返回的每一层是一个list,而BFS是所有层拼起来的一个数组
。
class Solution(object):
def levelorderTraversal(self, root: TreeNode):
if root is None:
return []
result, level = [], []
queue = [root, None]
while queue:
node = queue.pop(0)
if node is None:
queue.append(None)
if len(level) == 0:
break
result.append(level)
level = []
else:
level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return result