leetcode 429 N叉树的层序遍历

一、题目描述

二、解题思路

整体思路

可以借助队列来完成n叉树的层序遍历,由于需要返回一个二维数组,所以需要在每次处理队列中的节点之前进行计数。

具体思路

(1)首先进行变量的初始化,ret用于承接最终的返回值,如果root==nullptr,就返回ret;

(2)将root加入Q,当Q不为空时,进行循环:

<1>首先,统计本层的节点数,size=Q.size(),向量current用于承接当前层的序列;

<2>遍历当前层的节点,将当前节点弹出,并将其子节点加入队列;

<3>遍历完当前层后,将current加入ret;

(3)Q为空后,ret即为所求,返回即可。

三、代码实现

cpp 复制代码
/*
// 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) {
        //队列
        queue<Node*> Q;
        vector<vector<int>> ret;
        if(root==nullptr) return ret;

        Q.push(root);
        while(Q.size()){
            //先求出本层元素的个数
            int size=Q.size();
            vector<int> current;
            for(int i=0;i!=size;i++){
                Node* t=Q.front();
                Q.pop();
                current.push_back(t->val);
                for(Node* child:t->children){
                    if(child!=nullptr) 
                        Q.push(child);
                }
            }
            ret.push_back(current);
        }
        return ret;
    }
};
相关推荐
·present·3 分钟前
CSAPP(lecture 4_01)
c语言·c++
FPGA小迷弟9 分钟前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
c++·python·ai·plotly·django·ai编程·claude
零售校长21 分钟前
西湖区零售门店店长面试怎么准备
面试·职场和发展·零售
秋天的怀念_David23 分钟前
算法一千零一夜 · 第十四夜 幻方与奇妙的二进制
java·程序人生·算法
薛定e的猫咪29 分钟前
(ICLR 2020)MAML 靠的不是快速学习,而是特征复用
人工智能·深度学习·学习·算法·机器学习
程序员-King.34 分钟前
【ROS1】Noetic 开发工作流程与常用命令
c++·ubuntu·ros
云深麋鹿42 分钟前
C++ | 基于红黑树实现mymap与myset
开发语言·c++
薛定e的猫咪1 小时前
(ICLR 2026)DF-META:面向 FJSP 的无导数元学习实例自适应调度
人工智能·深度学习·学习·算法·机器学习
傲世仙尊2 小时前
string增删查改-insert-erase-replace与find加substr组合技
c++
java_nnnn2 小时前
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
java·开发语言·leetcode