按之字形顺序打印二叉树
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
# class TreeNode:
# 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
res = []
if not pRoot:
return res
reverse = False
curr_nodes = [pRoot]
while curr_nodes:
curr_values = []
next_nodes = []
for node in curr_nodes:
curr_values.append(node.val)
if node.left:
next_nodes.append(node.left)
if node.right:
next_nodes.append(node.right)
if reverse:
curr_values = curr_values[::-1]
res.append(curr_values)
curr_nodes = next_nodes
reverse = not reverse
return res