当前位置: 首页 > news >正文

LeetCode102. 二叉树的层序遍历

文章目录

    • 题目要求:
    • 思路
    • C++代码

题目要求:

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

image-20230426143729374

思路

首先想到的就是

  1. 根节点入队
  2. 取队头元素(出队),把队头节点的左右孩子入队。
  3. 重复

但如何要把每一层分别区分出来?★ 关键

一个一个的出显然无法判断是第几层,所以考虑一层一层地出。

用一个变量levelSize记录该层的节点个数,levelSize = queue.size()

levelSize为0的时候:

1. 本层节点已经出完
2. 下一层节点已经入完

解题思路:

利用一个队列q,然后一个vector,

vector里的每个元素都是一个vector<int> 用于存放每一层的数据

  • 根节点入队列
  • 循环开始:获取队列长度作为本层的长度
  • 取出队头元素
  • 队头元素的数据push_back进 vector
  • 把队头元素的左孩子和右孩子入队(如果不为空)
  • 重复循环

当队列为空的时候,遍历结束

C++代码

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        queue<TreeNode*> q;
        vector<vector<int>> vv;
        //root不为空,入队
        if(root)
        {
            q.push(root);
        }
        while(!q.empty()){
            //本层节点个数
            int levelSize = q.size();
            //本层数据
            vector<int> v;  
            while(levelSize--){
                //取队头,出队
                TreeNode* front = q.front();
                q.pop();
                int val = front->val;
                v.push_back(val);
                //左右孩子入队
                if(front->left)
                    q.push(front->left);
                if(front->right)
                    q.push(front->right);
            }
            //本层走完了,更新vv
            vv.push_back(v);
        }
        return vv;
    }
};

相关文章:

  • 算法-二叉树篇09-平衡二叉树
  • 【Python爬虫(86)】元宇宙浪潮下,Python爬虫能否乘风破浪?
  • 【leetcode hot 100 11】移动零
  • 道可云人工智能每日资讯|深圳将设立人工智能和机器人产业基金
  • VMware各个软件的作用
  • javascript this 关键字
  • 联想 SR590 服务器 530-8i RAID 控制器更换损坏的硬盘
  • 动态内容加载的解决方案:Selenium与Playwright对比故障排查实录
  • 【面试】Java 之 String 系列 -- String 为什么不可变?
  • Linux Kernel Connection Tracking Table
  • ES的简单讲解
  • 【量化策略】动量追踪策略
  • Tkinter 标准对话框
  • 【PromptCoder】使用 package.json 生成 cursorrules
  • AWS S3 如何设置公开访问权限?
  • Git系列详细介绍和操作
  • Flutter系列教程之(5)——常用控件Widget的使用示例
  • 深入理解 Spring 中的 `ThreadPoolTaskExecutor` 与 `ThreadPoolExecutor`
  • CC攻击防御策略全解析:技术实现与代码示例
  • 【C/C++】理解C++内存与Linux虚拟地址空间的关系---带你通透C++中所有数据
  • 企业网站做的公司/北京关键词优化服务
  • 网站的服务器怎么做的/搜索引擎seo关键词优化效果
  • 当当网网站建设/购买友情链接网站
  • html5网站尺寸/网推
  • 外国网站学习做任务 升级/深圳搜索引擎优化推广便宜
  • 中咨城建设计有限公司 网站/域名收录查询