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;
    }
};
相关推荐
2401_8322981011 分钟前
人机协同:AI时代全新工作与学习范式
职场和发展
童园管理札记11 分钟前
从政策驱动到课堂落地:2026年“人工智能+教育”全景解读与技术实践指南
人工智能·python·深度学习·职场和发展·学习方法
Lazionr24 分钟前
多态:从多种形态到运行时绑定
开发语言·c++
tryxr30 分钟前
矩阵的几种基础变换
java·数据结构·算法·矩阵
mmmmath_334 分钟前
LeetCode.028.找出字符串中第一个匹配项的
数据结构·算法·leetcode
别动我齐刘海35 分钟前
ROS2 Jazzy + C++ 实战路线——ros2_control
c++·人工智能·python·opencv·机器学习·机器人·github
Selvaggia1 小时前
DMD(Distribution Matching Distillation,分布匹配蒸馏)
算法
Navigator_Z1 小时前
LeetCode //C - 1255. Maximum Score Words Formed by Letters
c语言·算法·leetcode
All for pursuit.1 小时前
【栈-4】739.每日温度
数据结构·c++·算法·leetcode
码匠许师傅1 小时前
【C++三方组件】glog:Google 出品的 C++ 日志库
c++