leetcode算法(429.N叉树的层序遍历)

cpp 复制代码
class Solution {
public:
    // 实现N叉树的层序遍历
    vector<vector<int>> levelOrder(Node* root) {
        // 创建队列用于BFS层序遍历
        queue<Node*> que;
        
        // 如果根节点不为空,将其加入队列
        if (root != NULL) que.push(root);
        
        // 存储结果的二维向量,每层作为一个子向量
        vector<vector<int>> result;
        
        // 当队列不为空时,继续遍历
        while (!que.empty()) {
            // 获取当前层的节点数量
            int size = que.size();
            
            // 创建向量存储当前层的节点值
            vector<int> vec;
            
            // 遍历当前层的所有节点
            for (int i = 0; i < size; i++) {
                // 取出队首节点
                Node* node = que.front();
                que.pop();
                
                // 将当前节点的值加入当前层向量
                vec.push_back(node->val);
                
                // 遍历当前节点的所有孩子节点
                for (int j = 0; j < node->children.size(); j++) {
                    // 如果孩子节点不为空,将其加入队列
                    // 实际上N叉树的children通常不包含NULL,这里判断是冗余的
                    if (node->children[j]) que.push(node->children[j]);
                }
            }
            
            // 将当前层的结果加入总结果
            result.push_back(vec);
        }
        
        // 返回层序遍历结果
        return result;
    }
};
相关推荐
纪伊路上盛名在3 分钟前
Kabsch算法的Julia实现
开发语言·算法·julia·序列分析·蛋白质·rmsd
裕晟资质规划20 分钟前
军工保密资质二级申报的四个可量化硬条件:条文位置、数值口径与西安配套企业实务要点
java·服务器·网络·数据库·算法
LuminousCPP20 分钟前
数据结构-排序(一):基础排序算法横向对比|冒泡、插入、希尔、堆与双向选择,详解二分 / Knuth 增量
c语言·数据结构·笔记·算法·排序算法
Nil20829 分钟前
leetcode 46全排列
算法·leetcode·职场和发展
辰烨chenye1 小时前
LeetCode Hot 100 题解 · 动态规划篇
算法·leetcode·动态规划
青山木1 小时前
Hot 100 --- 买卖股票的最佳时机
java·数据结构·算法·leetcode·贪心算法
wlkdb1 小时前
大模型/Agent 时代下的视觉算法
图像处理·算法·计算机视觉
sali-tec1 小时前
C# 基于OpenCv的视觉工作流-章107-光流追踪
图像处理·人工智能·opencv·算法·计算机视觉
csdn_aspnet2 小时前
C++ 未排序数组中第 k 个最小/最大元素 | 最坏情况下的线性时间
数据结构·c++·算法
phltxy11 小时前
C语言操作符详解
java·c语言·算法