103. Binary Tree Zigzag Level Order Traversal

设个bool值来判断要不要reverse,每次遍历一层就not一下

class Solution:
    def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root: return
        
        res = []
        q = collections.deque([root])
        
        zigzag = False
        while q:
            width = len(q)
            level = []
            for _ in range(width):
                node = q.popleft()
                level.append(node.val)
                if node.left: q.append(node.left)
                if node.right: q.append(node.right)
            if zigzag:
                level.reverse()
            zigzag = not zigzag
            res.append(level)
            
        return res

Last updated

Was this helpful?