102. Binary Tree Level Order Traversal
https://leetcode.com/problems/binary-tree-level-order-traversal/
solution
如果需要区分bfs的每一层,需要每一层更新队列;如果不区分每层,采用队列的push、pop
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
queue = collections.deque([root])
res = []
while queue:
levels = [] # 树每层新开一个array,保存结果
for _ in range(len(queue)): # 每层结果单独一个array间隔的关键在增加一层for,且for循环次数要保持刚进入循环时的size
node = queue.popleft()
levels.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(levels)
return res时间复杂度:O(n) 空间复杂度:O(n)
follow-up
429. N-ary Tree Level Order Traversal
时间复杂度:O() 空间复杂度:O()
Last updated