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;
    }
};
相关推荐
Raink老师34 分钟前
【AI面试临阵磨枪-088】Skill 如何做参数校验、依赖注入、权限控制、超时、重试、幂等?
人工智能·面试·职场和发展
莫等闲-41 分钟前
leetcode42. 接雨水 leetcode84.柱状图中最大的矩形
数据结构·c++·算法·leetcode
爱吃生蚝的于勒41 分钟前
QT开发第二章——信号和槽
c语言·开发语言·c++·qt
unicrom_深圳市由你创科技41 分钟前
历史数据存储量太大,怎么处理?数据压缩/归档策略?
算法
浅念-42 分钟前
LeetCode 记忆化搜索 刷题总结
数据结构·算法·leetcode·职场和发展·深度优先·dfs
思麟呀1 小时前
C++工业级日志项目(八)最终上层接口
开发语言·c++
菜菜的顾清寒1 小时前
力扣HOT100(44)对称二叉树
数据结构·算法·leetcode
六bring个六1 小时前
c/c++面试踩坑笔记
c语言·数据结构·c++
bbaydnog1 小时前
嵌入式面试高频题第4弹:函数指针进阶、堆栈分析、Makefile入门,这3个答不上来就悬了
单片机·面试·职场和发展
石山代码1 小时前
如何在 C++ 中实现多态?
开发语言·c++