剑指 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) 大小的额外空间。