Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
return its zigzag level order traversal as:
[
[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 zigzagLevelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
res = []
level = []
if root is None:
return []
level.append(root)
while len(level):
temp = [] #为了保存每一层的结果
l = len(level)
for i in range(l): #为了遍历每一层的节点
node = level.pop(0)
temp.append(node.val)
if node.left:
level.append(node.left)
if node.right:
level.append(node.right)
res.append(temp)
for i in range(len(res)):
if i%2==1:
res[i].reverse()
return res