# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

#
# 
# @param root TreeNode类 
# @return int整型二维数组
#
from collections import deque
class Solution:
    def zigzagLevelOrder(self , root ):
        # write code here
        if not root:
            return []
        res = []
        q = deque([root])
        flag = 0
        temp = []
        while q:
            size = len(q)
            temp = []
            for i in range(size):
                curr = q.popleft()
                if flag == 0:
                    temp.append(curr.val)
                else:
                    temp.insert(0, curr.val)
                if curr.left:
                        q.append(curr.left)
                if curr.right:
                        q.append(curr.right)
            res.append(temp[:])
            flag = 1-flag
        return res