DEV Community

Cover image for Day 9 of 100 days dsa coding challenge
Manasi Patil
Manasi Patil

Posted on

Day 9 of 100 days dsa coding challenge

Taking on a new challenge: solving GeeksforGeeks POTD daily and sharing my solutions! πŸ’»πŸ”₯
The goal: sharpen problem-solving skills, level up coding, and learn something new every day. Follow my journey! πŸš€

100DaysOfCode #CodingChallenge #ProblemSolving #GeeksforGeeks #DeveloperJourney

*Problem: *
https://www.geeksforgeeks.org/problems/zigzag-tree-traversal/1

ZigZag Tree Traversal

Difficulty: Medium Accuracy: 54.05%

Given the root of a binary tree. You have to find the zig-zag level order traversal of the binary tree.
Note: In zig zag traversal we traverse the nodes from left to right for odd-numbered levels, and from right to left for even-numbered levels.

Examples:
Input: root = [1, 2, 3, 4, 5, 6, 7]


Output: [1, 3, 2, 4, 5, 6, 7]
Explanation:
Level 1 (left to right): [1]
Level 2 (right to left): [3, 2]
Level 3 (left to right): [4, 5, 6, 7]
Final result: [1, 3, 2, 4, 5, 6, 7]

Input: root = [7, 9, 7, 8, 8, 6, N, 10, 9]


Output: [7, 7, 9, 8, 8, 6, 9, 10]
Explanation:
Level 1 (left to right): [7]
Level 2 (right to left): [7, 9]
Level 3 (left to right): [8, 8, 6]
Level 4 (right to left): [9, 10]
Final result: [7, 7, 9, 8, 8, 6, 9, 10]
Constraints:
1 ≀ number of nodes ≀ 105
1 ≀ node->data ≀ 105

Solution:
class Solution:
def zigZagTraversal(self, root):
if not root:
return []
res, q, left_to_right = [], [root], True
while q:
level = []
for _ in range(len(q)):
node = q.pop(0)
level.append(node.data)
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
if not left_to_right:
level.reverse()
res.extend(level)
left_to_right = not left_to_right
return res

Top comments (0)