LeetCode:429. N 叉树的层序遍历

本文介绍了一种算法,用于实现N叉树的层序遍历,并提供了详细的代码实现。通过使用队列来逐层处理节点,最终得到每层节点值的列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给定一个 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] 之间

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal
 

注意:N叉树与二叉树的区别在哪儿?

/*
// 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>> result;
        //如果节点为空
        if(!root)return result;
        //初始化队列
        queue<Node*>q;
        //根节点入队列
        q.push(root);
        //当队列不为空时
        while(!q.empty()){
            //获取第N层size
            int currentSize=q.size();
            //临时储存第N层的结果,[1,2]
            vector<int>temp;
            //处理该层节点
            for(int i=0;i<currentSize;i++){
                //取第i个节点
                auto node=q.front();
                //节点处队列
                q.pop();
                //存储val
                temp.push_back(node->val);
                //子节点进入队列
                for(auto cnode:node->children)if(cnode)q.push(cnode);
            }
            //该层结果进入存在总结果集[[1,2],[2,1]]
            result.push_back(temp);
        }
        //返回结果
        return result;
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值