MEDIUM Trees / BFS
103. Binary Tree Zigzag Level Order Traversal
๐ Problem
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).
๐ง Visual Learning Aid
1 Model the input into the right structure
2 Choose the core technique and invariant
3 Execute step-by-step with a sample
4 Validate complexity and edge cases
JS/TS Refreshers
- โขArray methods (`push`, `pop`, `shift`, `slice`)
- โขObject/Map/Set usage patterns
- โขFunction parameter and return typing
- โขLevel-order traversal
- โขQueue discipline
- โขShortest-step interpretation
Logical Thinking Concepts
- โขDefine invariants before coding
- โขCheck edge cases first (`[]`, single element, duplicates)
- โขEstimate time/space before implementation
- โขApply BFS reasoning pattern
๐ก Approach
- โ Use BFS with queue for level order traversal
- โ Track direction flag to zigzag between levels
- โ Reverse alternate levels before adding to result
- โ Time: O(n), Space: O(w) where w is max width
๐งญ Prerequisites
๐ ๏ธ Hints & Pitfalls
Hints
- โขUse BFS with queue for level order traversal
- โขTrack direction flag to zigzag between levels
- โขReverse alternate levels before adding to result
Common Pitfalls
- โขTime: O(n), Space: O(w) where w is max width
๐งช Test Cases
Hidden tests on submit: 1
Test Case 1
Not run Input:
zigzagLevelOrder(buildTree([3,9,20,null,null,15,7])); Expected:
[[3], [20,9], [15,7]] Test Case 2
Not run Input:
zigzagLevelOrder(buildTree([1])); Expected:
[[1]] Test Case 3
Not run Input:
zigzagLevelOrder(buildTree([])); Expected:
[] ๐ Code Editor
๐ค Output