LeetCodeDiary

A Diary for solving LeetCode problems

View on GitHub
'''
Description: 
Autor: Au3C2
Date: 2021-01-20 12:31:06
LastEditors: Au3C2
LastEditTime: 2021-01-20 12:31:20
'''
"""
# Definition for a Node.
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 []
        ans = [[root.val]]
        lastLevel = [root]
        thisLevel = list() # 记录结点信息
        t = list() # 记录节点值
        flag = True if root.children else False # 记录是否有下一层的信息
        while flag:
            flag = False
            t = list() # 记录节点值
            thisLevel = list() # 记录结点信息
            for node in lastLevel:
                for c in node.children:
                    thisLevel.append(c)
                    t.append(c.val)
                    if c.children != None: # 存在下一层
                        flag = True
            if t:
                ans.append(t)
            lastLevel = thisLevel
        return ans

# 树,中等
# https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal/