diff --git a/problems/0102.二叉树的层序遍历.md b/problems/0102.二叉树的层序遍历.md index f4a5c466..ed2c683d 100644 --- a/problems/0102.二叉树的层序遍历.md +++ b/problems/0102.二叉树的层序遍历.md @@ -1426,28 +1426,36 @@ public: python代码: ```python +""" +# Definition for a Node. +class Node: + def __init__(self, val=None, children=None): + self.val = val + self.children = children +""" + class Solution: - """N叉树的层序遍历迭代法""" - def levelOrder(self, root: 'Node') -> List[List[int]]: - results = [] if not root: - return results + return [] - from collections import deque - que = deque([root]) + result = [] + queue = collections.deque([root]) - while que: - result = [] - for _ in range(len(que)): - cur = que.popleft() - result.append(cur.val) - # cur.children 是 Node 对象组成的列表,也可能为 None - if cur.children: - que.extend(cur.children) - results.append(result) + while queue: + level_size = len(queue) + level = [] - return results + for _ in range(level_size): + node = queue.popleft() + level.append(node.val) + + for child in node.children: + queue.append(child) + + result.append(level) + + return result ``` ```python