Given the root of a binary tree, return the zigzag level order traversal of its nodes' values (i.e., from left to right, then right to left for the next level, and alternate between).
Example 1:
Input: root = [3, 9, 20, null, null, 15, 7]
Output: [[3], [20, 9], [15, 7]]
Explanation: Level 0 reads left to right: [3]. Level 1 reads right to left: [20, 9]. Level 2 reads left to right: [15, 7].
Example 2:
Input: root = [1]
Output: [[1]]
Example 3:
Input: root = []
Output: []
[0, 2000]-100 <= Node.val <= 100