103.binary-tree-zigzag-level-order-traversal
阿新 • • 發佈:2022-05-10
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], 3 / \ 9 20 / \ 15 7 return its zigzag level order traversal as: [ [3], [20,9], [15,7] ]
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None from collections import deque class Solution(object): def zigzagLevelOrder(self, root): """ :type root: TreeNode :rtype: List[List[int]] """ stack = deque([root]) ans = [] odd = True while stack: level = [] for k in xrange(0, len(stack)): top = stack.popleft() if top is None: continue level.append(top.val) stack.append(top.left) stack.append(top.right) if level: if odd: ans.append(level) else: ans.append(level[::-1]) odd = not odd return ans