[LeetCode]102. Binary Tree Level Order Traversal

102. Binary Tree Level Order Traversal

思路:使用两个队列即可,然后交换,这样就可以区分每一层的值了。

class Solution(object):
    def levelOrder(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        if not root:
            return []
        res = []
        deque, deque_temp = [root], []
        path = []
        while deque or deque_temp:
            path = []
            while deque:
                node = deque.pop(0)
                path.append(node.val)
                if node.left:
                    deque_temp.append(node.left)
                if node.right:
                    deque_temp.append(node.right)
            if path:
                res.append(path)
            path = []
            while deque_temp:
                node = deque_temp.pop(0)
                path.append(node.val)
                if node.left:
                    deque.append(node.left)
                if node.right:
                    deque.append(node.right)
            if path:
                res.append(path)
        return res

简化代码,直接替换也行

class Solution(object):
    def levelOrder(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        if not root:
            return []
        res = []
        deque, deque_temp = [root], []
        while deque:
            path = []
            while deque:
                node = deque.pop(0)
                path.append(node.val)
                if node.left:
                    deque_temp.append(node.left)
                if node.right:
                    deque_temp.append(node.right)
            if path:
                res.append(path)
            if deque_temp:
                deque = deque_temp
                deque_temp = []
        return res
posted @ 2017-09-06 20:26  banananana  阅读(101)  评论(0编辑  收藏  举报