日野弥生:勉強しよう

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

フラッシュタブ:LeetCode

题目链接:https://leetcode.cn/problems/n-ary-tree-level-order-traversal/

上一篇

LeetCode 590 - N 叉树的后序遍历

下一篇

LeetCode 559 - N 叉树的最大深度