题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
# 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
result = []
if not pRoot:
return result
left_to_right = True # 初始化设置为True
queue = [pRoot]
while queue:
temp = []
tempresult = []
for node in queue: # 也是从第一层即根节点开始遍历的
tempresult.append(node.val) # 临时存储每一层的节点值
if node.left:
temp.append(node.left)
if node.right:
temp.append(node.right)
queue = temp
if left_to_right: # 若该层flag为真则顺序存储节点值
result.append(tempresult)
else: # 若该层flag为假则倒序存储节点值
result.append(tempresult[::-1])
left_to_right = not left_to_right # 本层结束后反转flag,为下一层做准备
return result
在第一题的基础上多了一步操作,第一题考察对二叉树的遍历,第二题则多了一个用列表保存每一层的节电值,并且多了一个flag符号用来判断每一层的访问顺序。