jz032II.从上到下打印二叉树II Leetcode dfs queue Jun 17, 2020 题目链接 好的,按照bfs写了一下自己朴素的解法,就很简单了,不用多说了吧。当然别人还有更加好一点的实现,如解法2所示。这个算法的时间复杂度是O(N),空间复杂度是O(N)。 class Solution: def levelOrder1(self, root: TreeNode) -> List[List[int]]: if not root: return [] queue, res = [root], [[root.val]] while queue: tmpnode = [] tmpval = [] for node in queue: if node.left: tmpnode.append(node.left) tmpval.append(node.left.val) if node.right: tmpnode.append(node.right) tmpval.append(node.right.val) if tmpval: res.append(tmpval) queue = tmpnode return res def levelOrder2(self, root: TreeNode) -> List[List[int]]: if not root: return [] queue, res = [root], [] 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) res.append(tmp) return res def levelOrder3(self, root: TreeNode) -> List[List[int]]: if not root: return [] queue, res = [root], [] 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) res.append(tmp) return res PREVIOUSlc946.验证栈序列NEXTjz032III.从上到下打印二叉树