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;
    }
};
相关推荐
坚持就完事了几秒前
数据结构之树(Java实现)
java·算法
算法备案代理3 分钟前
大模型备案与算法备案,企业该如何选择?
人工智能·算法·大模型·算法备案
赛姐在努力.27 分钟前
【拓扑排序】-- 算法原理讲解,及实现拓扑排序,附赠热门例题
java·算法·图论
我能坚持多久1 小时前
【初阶数据结构01】——顺序表专题
数据结构
rainbow68891 小时前
EffectiveC++入门:四大习惯提升代码质量
c++
秋邱1 小时前
用 Python 写出 C++ 的性能?用CANN中PyPTO 算子开发硬核上手指南
开发语言·c++·python
我在人间贩卖青春2 小时前
C++之析构函数
c++·析构函数
野犬寒鸦2 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
霖霖总总2 小时前
[小技巧66]当自增主键耗尽:MySQL 主键溢出问题深度解析与雪花算法替代方案
mysql·算法
rainbow68892 小时前
深入解析C++STL:map与set底层奥秘
java·数据结构·算法