18. Level Order in spiral form
The problem can be found at the following link: 🔗 Question Link
🧩 Problem Description
Given a binary tree, return its spiral (zigzag) level-order traversal. In spiral order traversal:
At even-indexed levels (0-based), traverse nodes from right to left.
At odd-indexed levels, traverse nodes from left to right.
Return a list containing all node values in spiral order.
📘 Examples
Example 1:
Input:
root = [1, 3, 2]
Output:
[1, 3, 2]
Explanation:
Level 0 (even) → right to left: 1 Level 1 (odd) → left to right: 3 2
Example 2:
Input:
root = [10, 20, 30, 40, 60]
Output:
[10, 20, 30, 60, 40]
Example 3:
Input:
root = [1, 2, N, 4]
Output:
[1, 2, 4]
🔒 Constraints
1 ≤ number of nodes ≤ 10⁵
0 ≤ node->data ≤ 10⁵
✅ My Approach
Using Double-Ended Queue (Deque)
We use a deque to simulate two-directional traversal:
For even-indexed levels, we traverse from right to left using
pop_back()and push children to the front.For odd-indexed levels, we traverse from left to right using
pop_front()and push children to the back.
We alternate the direction at each level using a boolean flag.
Algorithm Steps:
Initialize deque
qand push root node.While
qis not empty:Traverse the current level based on direction:
If flag is
True(even), pop from back and push right→left children to front.If flag is
False(odd), pop from front and push left→right children to back.
Flip the flag at the end of each level.
🧮 Time and Auxiliary Space Complexity
Expected Time Complexity: O(n), as we visit each node exactly once in level order.
Expected Auxiliary Space Complexity: O(n), due to storing up to an entire level of nodes in the deque.
🧠 Code (C++)
🧑💻 Code (Java)
🐍 Code (Python)
🧠 Contribution and Support
For discussions, questions, or doubts related to this solution, feel free to connect on LinkedIn: 📬 Any Questions?. Let’s make this learning journey more collaborative!
⭐ If you find this helpful, please give this repository a star! ⭐
📍Visitor Count
Last updated