103 - Zigzag Level Order Traversal of BT

 avatar
unknown
python
a year ago
1.3 kB
7
Indexable
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right

from collections import deque
class Solution:
    def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:

        if root is None:
            return []
        result_list = []
        level_tracker = 0

        q = deque([root])

        while len(q) > 0:
            current_breadth_nodes = []
            # iterate through the queue, pack all nodes at the current breadth/frontier into the list
            for _ in range(len(q)):
                u = q.popleft()
                current_breadth_nodes.append(u.val)
                if u.left is not None:
                    q.append(u.left)
                if u.right is not None:
                    q.append(u.right)
            if level_tracker % 2 == 0:
                result_list.append(current_breadth_nodes)
            else:
                current_breadth_nodes_reversed = current_breadth_nodes[::-1]
                result_list.append(current_breadth_nodes_reversed)
            level_tracker += 1
        
        return result_list
            




        
Editor is loading...
Leave a Comment