155.二叉树:二叉树的层序遍历(力扣)

代码解决

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) 
    {
        queue<TreeNode*> 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++)  // 遍历当前层的每一个节点
            {
                TreeNode* node=que.front();  // 从队列中取出一个节点
                que.pop();  // 将该节点从队列中移除
                vec.push_back(node->val);  // 将该节点的值加入向量
                if(node->left) que.push(node->left);  // 如果该节点有左子节点,将其加入队列
                if(node->right) que.push(node->right);  // 如果该节点有右子节点,将其加入队列
            }
            result.push_back(vec);  // 将当前层的节点值向量加入结果向量
        } 
        return result;  // 返回结果向量
    }
};

这段代码实现了一个二叉树的层次遍历(广度优先遍历),并返回每一层的节点值组成的二维数组。具体实现如下:

  1. 定义二叉树节点的结构体 TreeNode
  2. 定义一个 Solution 类,其中包含一个公共成员函数 levelOrder
  3. levelOrder 函数中,首先检查根节点是否为空,如果不为空则将根节点加入队列。
  4. 初始化结果向量 result,用于存储每一层的节点值。
  5. 进入一个 while 循环,只要队列不为空,就继续处理:
    • 获取当前队列的大小(即当前层的节点数量)。
    • 初始化一个向量 vec,用于存储当前层的节点值。
    • 使用 for 循环遍历当前层的每一个节点:
      • 从队列中取出一个节点,并将其值加入 vec
      • 如果该节点有左子节点,则将左子节点加入队列。
      • 如果该节点有右子节点,则将右子节点加入队列。
    • 将当前层的节点值向量 vec 加入结果向量 result
  6. 最后返回结果向量 result
相关推荐
清梦202016 分钟前
经典问题---跳跃游戏II(贪心算法)
算法·游戏·贪心算法
Dream_Snowar38 分钟前
速通Python 第四节——函数
开发语言·python·算法
Altair澳汰尔1 小时前
数据分析和AI丨知识图谱,AI革命中数据集成和模型构建的关键推动者
人工智能·算法·机器学习·数据分析·知识图谱
A懿轩A1 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
Python机器学习AI1 小时前
分类模型的预测概率解读:3D概率分布可视化的直观呈现
算法·机器学习·分类
kkflash32 小时前
提升专业素养的实用指南
学习·职场和发展
吕小明么2 小时前
OpenAI o3 “震撼” 发布后回归技术本身的审视与进一步思考
人工智能·深度学习·算法·aigc·agi
1 9 J2 小时前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法
程序员shen1616112 小时前
抖音短视频saas矩阵源码系统开发所需掌握的技术
java·前端·数据库·python·算法
sinat_307021533 小时前
大数据政策文件——职业道德(山东省大数据职称考试)
大数据·职场和发展