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

每日一练:二叉树的层序遍历

102. 二叉树的层序遍历 - 力扣(LeetCode)

一、题目要求

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

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例 2:

输入:root = [1]
输出:[[1]]

示例 3:

输入:root = []
输出:[]

提示:

  • 树中节点数目在范围 [0, 2000] 内
  • -1000 <= Node.val <= 1000

二、解法1-队列 O(N)

        队列是一种先进先出的容器,本题需要使用两个队列,q1用来操作当前层的节点,节点存在就把值放到ret中,然后把这个节点的左右节点按顺序放在q2中,该节点出队列;节点为空就直接出队列,操作下一个节点。

class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> ret;queue<TreeNode*> q1;queue<TreeNode*> q2;q2.push(root);while (!q2.empty()) {swap(q1,q2); // q1得到下一层节点queue<TreeNode*>().swap(q2); // 清空q2,存放下下层节点vector<int> level; // 存放这一层节点的值while (!q1.empty()) {if (q1.front()) {level.push_back(q1.front()->val);q2.push(q1.front()->left);q2.push(q1.front()->right);}q1.pop();}if (!level.empty())ret.push_back(level);}return ret;}
};


http://www.mrgr.cn/news/35499.html

相关文章:

  • 并发编程。
  • 【学习复盘】相关资料
  • QT 自定义可拖动缩放的无边框窗口,可用于mainmindow, widget
  • WebGL性能分析与优化
  • 24/9/24 算法笔记 超参数优化算法
  • QT客户端发送HTTP请求此时服务器到底收到了哪些数据?
  • 解决Mac 默认设置 wps不能双面打印的问题
  • yum库 docker的小白安装教程(附部分问题及其解决方案)
  • 翻译:openmax文档
  • 从 Oracle 集群到单节点环境(详细记录一次数据迁移过程)之一:生产环境与目标服务器详情
  • 今日指数项目之大盘指数功能实现
  • 每日算法1(快慢指针)
  • nginx如何拦截未经授权的跳转
  • BUUCTF [SCTF2019]电单车详解两种方法(python实现绝对原创)
  • Codeforces Global Round 19 D题 Yet Another Minimization Problem(推式子,01背包变形)
  • 模拟哈希表
  • LVGL第一篇-了解lvgl显示原理以及使用C++移植
  • Zookeeper
  • BERT训练环节(代码实现)
  • Seata分布式事务实践