#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param pRoot TreeNode类 
# @return int整型二维数组
#
class Solution:
    def Print(self , pRoot: TreeNode) -> List[List[int]]:
        # write code here
        if not pRoot:
            return []
        left_to_right = True # 设置flag
        queue = [pRoot] # 存储每层的节点
        resultArray = []  # 最终的结果列表
        while queue: # 若每层节点不为空
            temp = [] # 存储每一层的节点,局部变量,不能用其控制while循环
            layerArray = []
            for node in queue:
                layerArray.append(node.val) # 这句要在if外面,即不管是什么节点首先要append上本节点值
                if node.left:
                    temp.append(node.left)
                if node.right:
                    temp.append(node.right)  # temp
            queue = temp 
            if left_to_right:
                resultArray.append(layerArray)
            else:
                resultArray.append(layerArray[::-1])
            left_to_right = not left_to_right # 把flag倒一下
        return resultArray
            

广度优先遍历每一层,列表存储每层的每个节点值,再存储每层的左右孩子节点,根据flag决定每层的节点值列表是否反转。