请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3<br /> / \<br /> 9 20<br /> / \<br /> 15 7<br />返回其层次遍历结果:
[
[3],
[20,9],
[15,7]
]
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if root is None:
return []
queue = []
queue.append(root)
res = []
path = []
temp = []
flag = 1
while queue:
path = []
temp = []
while queue != []:
temp.append(queue.pop(0))
while temp != []:
root = temp.pop(0)
path.append(root.val)
if root.left is not None:
queue.append(root.left)
if root.right is not None:
queue.append(root.right)
if flag % 2 == 1:
res.append(path[:])
else:
res.append(path[::-1])
flag += 1
return res
