本文共 1372 字,大约阅读时间需要 4 分钟。
计算每层的结点数,在将它们逐个弹出加入层列表,并将其子结点加入队列
class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: if root == None: return [] result = [] queue = collections.deque() queue.append(root) # visited = set(root) while queue: current_level = [] level_size = len(queue) for _ in range(level_size): node = queue.popleft() current_level.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) result.append(current_level) return result
时间复杂度为O(N)
带着当前层级数递归,层级数是当前层子列表的索引,每经过一个结点就将其加入当前层子列表
class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: if root == None: return [] self.result = [] self._DSF(root, 0) return self.result def _DSF(self, node, level): if not node: return if len(self.result) < level + 1: self.result.append([]) self.result[level].append(node.val) self._DSF(node.left, level + 1) self._DSF(node.right, level + 1)
时间复杂度为O(N)
转载地址:http://mghrb.baihongyu.com/