103. Binary Tree Zigzag Level Order Traversal (Medium)

Description:

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).

For example:
Given binary tree [3,9,20,null,null,15,7],


103. Binary Tree Zigzag Level Order Traversal (Medium)_第1张图片

return its zigzag level order traversal as:

[
[3],
[20,9],
[15,7]
]


Solution:

class Solution:
    def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
        if root == None:
            return []
        
        value_ls = []
        value_cache = [root.val]
        node_ls = [root]
        
        def helper(node_ls):
            cache = []
            for n in node_ls:
                if n != None:
                    cache += [n.left,n.right]
            return cache
        
        i = 0
        while value_cache:
            if i%2 == 1:
                value_ls.append(value_cache[::-1])
            else:
                value_ls.append(value_cache)
                
            node_ls = helper(node_ls)
            value_cache = [n.val for n in node_ls if n != None]
            i += 1
            
        return value_ls

Runtime: 32 ms, faster than 97.07% of Python3 online submissions for Binary Tree Zigzag Level Order Traversal.
Memory Usage: 13.4 MB, less than 32.01% of Python3 online submissions for Binary Tree Zigzag Level Order Traversal.

你可能感兴趣的:(103. Binary Tree Zigzag Level Order Traversal (Medium))