LeetCode 429. N-ary Tree Level Order Traversal

Description

Given an n-ary tree, return the level order traversal of its nodes' values.node

Nary-Tree input serialization is represented in their level order traversal, each group of children is separated by the null value (See examples).git

Example 1:
narytreeexamplegithub

Input: root = [1,null,3,2,4,null,5,6]
Output: [[1],[3,2,4],[5,6]]
Example 2:

sample_4_964
Example 2:網絡

Input: 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]
Output: [[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]

Constraints:app

The height of the n-ary tree is less than or equal to 1000
The total number of nodes is between [0, 10^4]less

描述

給定
一個 N 叉樹,返回其節點值的層序遍歷。 (即從左到右,逐層遍歷)。ui

例如,給定一個 3叉樹 :spa

返回其層序遍歷:code

[
     [1],
     [3,2,4],
     [5,6]
]

說明:blog

樹的深度不會超過 1000。
樹的節點總數不會超過 5000。

來源:力扣(LeetCode)
連接:https://leetcode-cn.com/probl...
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。

思路

  • 層次遍歷,使用隊列。
  • 將當前層的全部節點押入隊中,記下當前隊列中元素的個數。
  • for 循環取出當前層的元素,每取一個元素,將其的 children 元素押入隊列尾部。
# -*- coding: utf-8 -*-
# @Author:             何睿
# @Create Date:        2019-12-28 21:23:06
# @Last Modified by:   何睿
# @Last Modified time: 2019-12-28 21:34:42


from typing import List
from collections import deque


class Solution:
    def levelOrder(self, root: 'Node') -> List[List[int]]:
        if not root:
            return []
        result = []
        queue = deque([root])

        while queue:
            tmp = []
            count = len(queue)
            for _ in range(count):
                node = queue.popleft()
                tmp.append(node.val)
                if node.children:
                    queue.extend(node.children)
            result.append(tmp)

        return result

源代碼文件在 這裏
©本文首發於 何睿的博客 ,歡迎轉載,轉載需保留 文章來源 ,做者信息和本聲明.

相關文章
相關標籤/搜索