jz032III.从上到下打印二叉树

 

题目链接

额,我就是把jz032II在tmp里存好每一层的时候间隔着反转了一下数组然后加入了答案中。应该不是这样做的吧?额看了一下好像这种实现也还行,我就不来讨论别的解法了,因为看起来代码也没有更加简洁之类的。这个算法的时间复杂度是O(N),空间复杂度是O(N)。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:

    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root:
            return []
        queue, res = [root], []
        flag = True
        while queue:
            tmp = []
            for _ in range(len(queue)):
                node = queue.pop(0)
                tmp.append(node.val)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            if flag:
                flag = False
            else:
                flag = True
                tmp = tmp[::-1]
            res.append(tmp)
        return res