【代码随想录】刷题Day15

news/2024/11/30 0:45:07/

1.层序遍历

102. 二叉树的层序遍历

1.首先层序遍历是通过队列结构实现的

2.其实就是循环将每一层节点入队列,随后出队列将数据存储起来。通过出队列的节点,将其左右节点,也就是再把下一层的节点入队列。那么我们就能得到层序遍历的结果了

3.我实现这题用了一个队列存储节点,一个vector<TreeNode*>存储出队列节点,一个vector<int>存储一层的数据。

class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> ret;if(root==nullptr)return ret;queue<TreeNode*> q;q.push(root);while(!q.empty()){vector<TreeNode*> tmp;while(!q.empty()){tmp.push_back(q.front());q.pop();}vector<int> v;for(auto& e:tmp){v.push_back(e->val);if(e->left)q.push(e->left);if(e->right)q.push(e->right);}ret.push_back(v);}return ret;}
};

2.翻转二叉树

226. 翻转二叉树

1.由于我们要在开始就需要把左右节点调换,之后往下递归。

2.所以我们使用的是前序遍历

那么传入的值其实就是根节点,返回值不需要所以未void

如果我们访问到的节点为空,那么递归结束

进行执行调换操作,我们只需要把左右节点相互交换即可

class Solution {
public:void _invertR(TreeNode* root){if(root==nullptr)return;swap(root->left,root->right);_invertR(root->left);_invertR(root->right);}TreeNode* invertTree(TreeNode* root) {_invertR(root);return root;}
};

3.对称二叉树

101. 对称二叉树

1.需要判断是否对称,那么其实我们是不能使用前中序遍历的,因为这两个遍历方式,没能起到把所有的节点结果得到,就进行判断,这样并不能得到最后的结果

2.所以我们需要使用后续遍历

首先是传入的参数,其实我们要判断的就是一个节点的左右子树是否对称,所以我们传入的参数是左右节点;返回值由于需要判断是否为对称,因此传出一个bool

结束条件有三种:

一、左子树为空,右子树不为空 或者 左子树不为空,右子树为空 返回false

二、左子树为空,右子树为空 返回true

三、左子树不为空,右子树不为空,且两个值不相同,返回false

最后的执行操作就是将左右节点递归返回的值进行AND,最后返回就是对称与否的结果

3.注意,在写条件判断时,一定要先判断有无节点的条件,在判断是否相等,这样就不会出现非法访问的操作了

class Solution {
public:bool _isSymmetricR(TreeNode* left,TreeNode* right){if(!left&&right||left&&!right)return false;if(left==nullptr&&right==nullptr)return true;if(left->val!=right->val)return false;return _isSymmetricR(left->left,right->right)&&_isSymmetricR(left->right,right->left);}bool isSymmetric(TreeNode* root) {return _isSymmetricR(root,root);}
};


http://www.ppmy.cn/news/60741.html

相关文章

【移动端网页布局】流式布局案例 ⑦ ( 水平排列的图片链接 2 | 浮动设置 | 盒子模型类型设置 | 结构伪类选择器 )

文章目录 一、水平排列的图片链接样式及核心要点1、实现效果2、HTML 结构3、CSS 样式 二、完整代码示例1、HTML 标签结构2、CSS 样式3、展示效果 一、水平排列的图片链接样式及核心要点 1、实现效果 实现如下样式 , 水平排列的图片链接 , 第一个图片占宽度的 50% , 第二第三个 …

从PDF文档中提取文字的方法及实例

如果你想在PDF文档中查找特定的文本&#xff0c;可以使用编辑器或搜索工具来帮助你实现这个目标。然而&#xff0c;如果你需要确定PDF文档中所有文字的字体和大小&#xff0c;那么可以使用一些不同的方法。 以下是几种方法&#xff0c;可以帮助你确定PDF文档中文字的字体和大小…

利用 Delte-Sigma ADC简化电路设计

很多时候在电路中选择合适的 ADC可以很大程度上简化前端的电路。这里我们一起来看一个电阻电桥的例子&#xff1a; 这里用到了一只仪表放大器和一只运算放大器&#xff0c;他们实际上主要完成了三个功能&#xff1a; 1. 抑制了 2.5V的共模信号&#xff1b; 2. 将-1…

idea2021.3.x激活教程

第一步: 下载最新的 IDEA 2021.3.3 版本安装包 先从 IDEA 官网下载 IDEA 2021.3.3 版本的安装包&#xff0c;下载链接可以自行百度IDEA官网。 点击下载&#xff0c;耐心等待下载完成。 第二步: 开始安装(已安装可跳过此步骤) 指定安装目录。 勾选创建桌面快捷方式&#xff0…

关注度拉满,RSAC 2023 热门安全工具速览

RSAConference2023于当地时间4月24日在旧金山正式拉开帷幕。自上届RSAC以来&#xff0c;网络安全行业发生了巨大的变化&#xff0c;尤其是以OpenAI聊天机器人为代表的内容生成型AI的兴起&#xff0c;对网络防御和攻击的影响比以往任何时候都更加明显。 今年&#xff0c;与RSAC相…

七彩虹DDR5主板四根开启XMP教程

七彩虹的D5主板&#xff0c;通常在安装8G2、16G2的情况下是可以正常开启XMP的&#xff0c; 但在16G4、32G2的情况下机会出现XMP超频失败或蓝屏问题 这是由于BIOS优化不足造成的 第一步还是开启XMP&#xff0c;也可以在选择XMP后&#xff0c;切换到用户自定义模式&#xff0c…

Rust - 可变引用和悬垂引用

可变引用 在上一篇文章中&#xff0c;我们提到了借用的概念&#xff0c;将获取引用作为函数参数称为 借用&#xff08;borrowing&#xff09;&#xff0c;通常情况下&#xff0c;我们无法修改借来的变量&#xff0c;但是可以通过可变引用实现修改借来的变量。代码示例如下&…

Linux安装MongoDB数据库,并内网穿透远程连接

文章目录 前言1. 配置Mongodb源2. 安装MongoDB3. 局域网连接测试4. 安装cpolar内网穿透5. 配置公网访问地址6. 公网远程连接7. 固定连接公网地址8. 使用固定地址连接 转载自Cpolar Lisa文章&#xff1a;Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接「内网穿透」 前言 …