1. # Definition for a binary tree node.
    2. # class TreeNode:
    3. # def __init__(self, val=0, left=None, right=None):
    4. # self.val = val
    5. # self.left = left
    6. # self.right = right
    7. class Solution:
    8. def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
    9. if root == None:
    10. return []
    11. result = []
    12. queue = [root]
    13. depth = 0
    14. while queue:
    15. depth += 1
    16. level = []
    17. size = len(queue)
    18. for i in range(size):
    19. node = queue.pop(0)
    20. level.append(node.val)
    21. if node.left:
    22. queue.append(node.left)
    23. if node.right:
    24. queue.append(node.right)
    25. if (depth % 2) == 0:
    26. result.append(level[::-1])
    27. else:
    28. result.append(level)
    29. return result