leetcode_429 N 叉树的层序遍历

114 阅读1分钟

要求

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。

示例 1:

image.png

输入:root = [1,null,3,2,4,null,5,6]
输出:[[1],[3,2,4],[5,6]]

示例 2:

image.png

输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
输出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]

核心代码

class Node:
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children


class Solution:
    def levelOrder(self, root: 'Node') -> List[List[int]]:
        if not root:
            return []
        
        nodes = [root]
        result = list(list())
        self.generate(nodes,result)
        return result
    
    def generate(self,nodes,result):
        new_nodes = []
        new_nodes_values = []

        for node in nodes:
            for leaf in node.children:
                new_nodes.append(leaf)
            new_nodes_values.append(node.val)
        
        result.append(new_nodes_values)
        if len(new_nodes) == 0:
            return 
        self.generate(new_nodes,result)

image.png

解题思路:这个题的解题思路和二叉树的层次遍历是一样的,我们都需要一个新的节点层和节点的值层,对数据进行存储,依据层次进行遍历即可。