# 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决定每层的节点值列表是否反转。