Leetcode•Jun 28, 2025
Binary Tree Zigzag Level Order Traversal
Hazrat Ali
Leetcode
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]]
Example 2:
Input: root = [1] Output: [[1]]
Example 3:
Input: root = [] Output: []
Solution
/**
* @param {TreeNode} root
* @return {number[][]}
*/
const zigzagLevelOrder = root => {
if (!root) return [];
const result = [];
let level = [];
let stack1 = [root];
let stack2 = [];
let flag = true;
while (stack1.length > 0) {
const node = stack1.pop();
const { left, right } = node;
level.push(node.val);
if (flag) {
if (left) stack2.push(left);
if (right) stack2.push(right);
} else {
if (right) stack2.push(right);
if (left) stack2.push(left);
}
if (stack1.length === 0) {
result.push(level);
flag = !flag;
stack1 = stack2;
stack2 = [];
level = [];
}
}
return result;
};