日野弥生:勉強しよう
LeetCode 429 - N 叉树的层序遍历
发表于2025年03月29日
本题和二叉树的层次遍历思路一致,注意双层列表的拷贝。
class Solution:
def levelOrder(self, root: 'Node') -> List[List[int]]:
q = deque()
result = []
levelResult = []
if not root:
return result
q.append([root, 0])
lvl = 0
while q:
curr = q.popleft()
if curr[1] == lvl:
levelResult.append(curr[0].val)
else:
lvl += 1
# 这里必须深拷贝,不然下一行会把已经append进去的列表也clear了
result.append(levelResult[:])
levelResult.clear()
levelResult.append(curr[0].val)
if curr[0].children:
for ch in curr[0].children:
q.append([ch, curr[1] + 1])
result.append(levelResult)
return result