题目
层序打印二叉树,例如给出二叉树:
输出:
[[1],
[2,3],
[4,5]]
思路
设置列表dst
保存完整的打印结果
设置列表layer
表示当前层
,列表tmp
存储当前层结点的值
设置列表nextLayer
表示下一层
,即当前层的孩子结点构成的层
初始时,将根节点
加入layer
,nextLayer
为空
当layer
不为空时,遍历layer
,将当前结点值
加入tmp
中,当前结点的左右孩子
加入nextLayer
中
遍历完后,令layer
指向nextLayer
,重复以上步骤
代码
class Solution:
def Print(self, pRoot):
if not pRoot:
return []
dst, layer = [], []
layer.append(pRoot)
while layer:
tmp = []
nextLayer = []
for node in layer:
tmp.append(node.val)
if node.left:
nextLayer.append(node.left)
if node.right:
nextLayer.append(node.right)
dst.append(tmp)
layer = nextLayer
return dst