[LeetCode]Binary Tree Zigzag Level Order Traversal | zigzag层次遍历

Binary Tree Zigzag Level Order Traversal

题意:按照Zigzag的顺序来遍历二叉树。

思路:我们可以按照之前的层次遍历的思路来解决,使用两个队列来计算,因为它的规则是第二个为反序的,所以reverse即可。

class Solution(object):
    def zigzagLevelOrder(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        if not root:
            return []
        res = []
        deque1, deque2 = [root], []
        while deque1 or deque2:
            deque2 = []
            if deque1:
                res.append(list(map(lambda x:x.val, deque1)))
            while deque1:
                node = deque1.pop(0)
                if node.left:
                    deque2.append(node.left)
                if node.right:
                    deque2.append(node.right)
            deque1 = []
            if deque2:
                res.append(list(reversed(map(lambda x:x.val, deque2))))
            while deque2:
                node = deque2.pop(0)
                if node.left:
                    deque1.append(node.left)
                if node.right:
                    deque1.append(node.right)
        return res
posted @ 2017-09-15 16:59  banananana  阅读(136)  评论(0)    收藏  举报