LeetCode-429 N叉树的层次遍历

简介: LeetCode-429 N叉树的层次遍历

来源:力扣(LeetCode)

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

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目描述

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

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

 

示例 1:

 

 

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

输出:[[1],[3,2,4],[5,6]]

示例 2:

 

 

输入: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]]

 

提示:

树的高度不会超过 1000

树的节点总数在 [0, 10^4] 之间

解题思路

利用一个队列记录当前层的结点,一个队列记录下一层的结点,遍历当前层就将下一层作为当前层进行遍历。注意判断结点为空的条件

代码展示

 

/*
// Definition for a Node.
class Node {
public:
    int val;
    vector<Node*> children;
    Node() {}
    Node(int _val) {
        val = _val;
    }
    Node(int _val, vector<Node*> _children) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {
public:
    vector<vector<int>> levelOrder(Node* root) {
        vector<vector<int>> vviRet;
        queue<Node*> visiting;
        if(!root) return vviRet;
        visiting.push(root);
        while(!visiting.empty())
        {
            queue<Node*> ch = visiting;
            visiting = queue<Node*>();
            vector<int> viRet;
            while(!ch.empty())
            {
                auto p = ch.front();
                ch.pop();
                viRet.push_back(p->val);
                for(auto iter: p->children)
                    if(iter)
                        visiting.push(iter);
            }
            vviRet.push_back(viRet);
        }
        return vviRet;
    }
};

运行结果

 

相关文章
|
3月前
|
Go
golang力扣leetcode 675.为高尔夫比赛砍树
golang力扣leetcode 675.为高尔夫比赛砍树
29 0
|
3月前
leetcode-SQL-608. 树节点
leetcode-SQL-608. 树节点
18 0
|
3月前
|
Java
leetcode-559:N 叉树的最大深度
leetcode-559:N 叉树的最大深度
19 0
|
3月前
leetcode-590:N 叉树的后序遍历
leetcode-590:N 叉树的后序遍历
25 0
|
3月前
leetcode-589:N 叉树的前序遍历
leetcode-589:N 叉树的前序遍历
15 0
leetcode-589:N 叉树的前序遍历
|
3月前
|
C++ Python
leetcode-513:找树左下角的值
leetcode-513:找树左下角的值
20 0
|
3月前
|
C++ Python
leetcode-572:另一棵树的子树
leetcode-572:另一棵树的子树
24 0
|
3月前
|
C++ Python 容器
leetcode-515:在每个树行中找最大值
leetcode-515:在每个树行中找最大值
16 0
|
3月前
|
存储 C++ Python
leetcode-429:N 叉树的层序遍历
leetcode-429:N 叉树的层序遍历
17 0
|
3月前
|
Java C++ Python
leetcode-538:把二叉搜索树转换为累加树
leetcode-538:把二叉搜索树转换为累加树
22 0