剑指 Offer 32 - II. 从上到下打印二叉树 II

一、题目

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

二、思路

 每一层打印到一行 。

三、代码

class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root: return []
        res, queue = [], collections.deque()
        queue.append(root)
        while queue:
            tmp = []
            for _ in range(len(queue)):
                node = queue.popleft()
                tmp.append(node.val)
                if node.left: queue.append(node.left)
                if node.right: queue.append(node.right)
            res.append(tmp)
        return res

四、分析

复杂度分析:
时间复杂度 O(N) : N为二叉树的节点数量,即 BFS 需循环 N 次。
空间复杂度 O(N) : 最差情况下,即当树为平衡二叉树时,最多有 N/2个树节点同时在 queue 中,使用 O(N) 大小的额外空间。

posted @ 2022-12-06 09:05  ImreW  阅读(21)  评论(0)    收藏  举报