class Solution:
def Print(self, pRoot):
# 方案:使用队列进行广度优先遍历:
queue=[]
rs=[]
if pRoot==None:return rs
#使用队列queue进行广度优先遍历
queue.append([pRoot,0])
while len(queue)>0:
#出队,并取出结点和对应的层数;
nodes=queue.pop(0)
node=nodes[0]
level=nodes[1]
#如果当前结点为该层第一个结点,那么就在结果集rs尾部添加一行,
#并直接把该节点加在结果集最后一行,如果不是该层第一个结点,那么
#就看是否是偶数层,如果是就顺序添加到结果集rs最后一行,若不是偶数层,
#那么就添加到结果集rs最后一行的首部;
if level>=len(rs):
rs.append([node.val])
elif level%2==0:
rs[level].append(node.val)
else:
rs[level].insert(0,node.val)
#如果当前结点的两个孩子结点不为空,就把孩子结点连同对应的层数一同入队;
if node.left:
queue.append([node.left,level+1])
if node.right:
queue.append([node.right,level+1])
return rs