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

代码随想录训练营Day11 | 226.翻转二叉树 - 101. 对称二叉树 - 104.二叉树的最大深度 - 111.二叉树的最小深度

226.翻转二叉树

  • 题目链接:226.翻转二叉树
  • 思路:遍历二叉树,遍历的时候交换左右节点即可
  • 代码:
TreeNode* invertTree(TreeNode* root) {reverse(root);return root;}// 迭代法,层序遍历void f2(TreeNode* root) {queue<TreeNode*> que;if (root != NULL) que.push(root);while (!que.empty()) {int size = que.size();for (int i = 0; i < size; i++) {TreeNode* node = que.front();que.pop();swap(node->left, node->right); // 节点处理if (node->left) que.push(node->left);if (node->right) que.push(node->right);}}return root;}// 递归法void reverse(TreeNode* root) {if(!root)return;TreeNode* l = root->left;TreeNode* r = root->right;reverse(l);reverse(r);root->left = r;root->right = l;}

101. 对称二叉树

  • 题目链接:101. 对称二叉树
  • 思路:遍历的时候,分别遍历比较左子树的右子树,和右子树的做子树,左子树的左子树和右子树的右子树对应即可
  • 代码:
/*** 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:// 递归法bool isEqual(TreeNode* right, TreeNode* left) {if(!right || !left)return right == left;return right->val == left->val && isEqual(right->left, left->right) && isEqual(right->right, left->left);}// 迭代法bool isEqualIter(TreeNode* u, TreeNode* v) {queue <TreeNode*> q;q.push(u); q.push(v);while (!q.empty()) {u = q.front(); q.pop();v = q.front(); q.pop();if (!u && !v) continue;if ((!u || !v) || (u->val != v->val)) return false;q.push(u->left); q.push(v->right);q.push(u->right); q.push(v->left);}return true;}bool isSymmetric(TreeNode* root) {if(!root)return true;return isEqualIter(root->left, root->right);}
};

104.二叉树的最大深度

  • 题目链接:104.二叉树的最大深度
  • 思路:遍历二叉树,记录最大深度即可
  • 代码:
class Solution {
public:// 递归法int maxRecur(TreeNode* root) {if (root == nullptr) {return 0;}int l_depth = maxDepth(root->left);int r_depth = maxDepth(root->right);return max(l_depth, r_depth) + 1;}// 迭代法,层序遍历int maxIter(TreeNode* root) {if (root == nullptr) return 0;queue<TreeNode*> Q;Q.push(root);int ans = 0;while (!Q.empty()) {int sz = Q.size();while (sz > 0) {TreeNode* node = Q.front();Q.pop();if (node->left) Q.push(node->left);if (node->right) Q.push(node->right);sz -= 1;}ans += 1;} return ans;}int maxDepth(TreeNode* root) {return maxRecur(root);}
};

111.二叉树的最小深度

  • 题目链接:111.二叉树的最小深度
  • 思路:遍历二叉树记录最小深度,相比最大深度,这里记录最小深度时,需要记录的是到叶子节点的最小深度,需要比最大深度多两个判断
  • 代码:
class Solution {
public:// 递归法int minDepthRecur(TreeNode *root) {if (root == nullptr) {return 0;}if (root->right == nullptr) {return minDepthRecur(root->left) + 1; // 左子树的最小高度}if (root->left == nullptr) {return minDepthRecur(root->right) + 1; // 右子树的最小高度}return min(minDepthRecur(root->left), minDepthRecur(root->right)) + 1;}// 迭代法,层序遍历int minDepthIter(TreeNode *root) {if (root == nullptr) return 0;queue<pair<TreeNode *, int> > que; // 记录节点和深度que.emplace(root, 1);while (!que.empty()) {TreeNode *node = que.front().first;int depth = que.front().second;que.pop();if (node->left == nullptr && node->right == nullptr) {return depth; // 没有子树,叶子节点,最先到达的叶子节点的高度为最小深度}if (node->left != nullptr) {que.emplace(node->left, depth + 1); // 左子树的深度}if (node->right != nullptr) { // 右子树的深度que.emplace(node->right, depth + 1);}}return 0;}int minDepth(TreeNode *root) {return minDepthRecur(root);}
};

相关文章:

代码随想录训练营Day11 | 226.翻转二叉树 - 101. 对称二叉树 - 104.二叉树的最大深度 - 111.二叉树的最小深度

226.翻转二叉树 题目链接&#xff1a;226.翻转二叉树思路&#xff1a;遍历二叉树&#xff0c;遍历的时候交换左右节点即可代码&#xff1a; TreeNode* invertTree(TreeNode* root) {reverse(root);return root;}// 迭代法&#xff0c;层序遍历void f2(TreeNode* root) {queue…...

“死鱼眼”,不存在的,一个提词小技巧,拯救的眼神——将内容说给用户,而非读给用户!

视频录制时&#xff0c;死鱼眼问题常见 即便内容再好&#xff0c;眼神死板也会减分 痛点真痛&#xff1a;拍视频时容易紧张 面对镜头&#xff0c;许多人难免紧张 神情僵硬&#xff0c;眼神无光&#xff0c;甚至忘词 这不仅影响表现&#xff0c;还让人难以专注 忘我场景&#x…...

深度学习在复杂系统中的应用

引言 复杂系统由多个相互作用的组成部分构成&#xff0c;这些部分之间的关系往往是非线性的&#xff0c;整体行为难以通过简单的线性组合来预测。这类系统广泛存在于生态学、气象学、经济学和社会科学等多个领域&#xff0c;具有动态演变、自组织、涌现现象以及多尺度与异质性…...

vue3图片懒加载

背景 界面很长&#xff0c;屏幕不能一下装下所有内容&#xff0c;如果以进入首页就把所有内容都加载完的话所需时间较长&#xff0c;会影响用户体验&#xff0c;所以可以当用户浏览到时再去加载。 代码 新建index.ts文件 src下新建directives文件夹&#xff0c;并新建Index…...

总结一些高级的SQL技巧

1. 窗口函数 窗函数允许在查询结果的每一行上进行计算&#xff0c;而不需要将数据分组。这使得我们可以计算累积总和、排名等。 SELECT employee_id,salary,RANK() OVER (ORDER BY salary DESC) AS salary_rank FROM employees;2. 公用表表达式 (CTE) CTE 提供了一种更清晰的…...

无人机飞手考证热,装调检修技术详解

随着无人机技术的飞速发展和广泛应用&#xff0c;无人机飞手考证热正在持续升温。无人机飞手不仅需要掌握飞行技能&#xff0c;还需要具备装调检修技术&#xff0c;以确保无人机的安全、稳定和高效运行。以下是对无人机飞手考证及装调检修技术的详细解析&#xff1a; 一、无人机…...

AI资讯快报(2024.10.27-11.01)

1.<国家超级计算济南中心发布系列大模型> 10月28日&#xff0c;以“人才引领创新 开放赋能发展”为主题的第三届山东人才创新发展大会暨第十三届“海洽会”集中展示大会在山东济南举行。本次大会发布了国家超级计算济南中心大模型&#xff0c;包括“智匠工业大模型、知风…...

范式的简单理解

第二范式 消除非键属性对键的部分依赖 第三范式 消除一个非键属性对另一个非键属性的依赖 表中的每个非键属性都应该依赖于键&#xff0c;整个键&#xff0c;而且只有键&#xff08;键可能为两个属性&#xff09; 第四范式 多值依赖于主键...

活着就好20241103

&#x1f31e; 早晨问候&#xff1a;亲爱的朋友们&#xff0c;大家早上好&#xff01;今天是2024年11月3日&#xff0c;第44周的第七天&#xff0c;也是本周的最后一天&#xff0c;农历甲辰[龙]年十月初三。在这金秋十一月的第三天&#xff0c;愿清晨的第一缕阳光如同活力的源泉…...

《华为工作法》读书摘记

无论做什么事情&#xff0c;首先要明确的就是做事的目标。目标是引导行动的关键&#xff0c;也是证明行动所具备的价值的前提&#xff0c;所以目标管理成了企业与个人管理的重要组成部分。 很多时候&#xff0c;勤奋、努力并不意味着就一定能把工作做好&#xff0c;也并不意味…...

【Unity基础】初识UI Toolkit - 运行时UI

Unity中的UI工具包&#xff08;UI Toolkit&#xff09;不但可以用于创建编辑器UI&#xff0c;同样可以来创建运行时UI。 关于Unity中的UI系统以及使用UI工具包创建编辑器UI可以参见&#xff1a; 1. Unity中的UI系统 2. 初识UI Toolkit - 编辑器UI 本文将通过一个简单示例来…...

20.体育馆使用预约系统(基于springboot和vue的Java项目)

目录 1.系统的受众说明 2.开发环境与技术 2.1 Java语言 2.2 MYSQL数据库 2.3 IDEA开发工具 2.4 Spring Boot框架 3.需求分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程分析 3.3 系统性能需求 3.4 系统功能需求 4.系…...

unity3d————三角函数练习题

先上代码&#xff1a; public class SinCos : MonoBehaviour {public float moveSpeed 10f; //前进的速度public float changValue 5f; //左右的速度public float changeSize 5f; //左右的幅度float time 0;void Update(){this.transform.Translate(Vector3.forwa…...

如何在Linux系统中使用Git进行版本控制

如何在Linux系统中使用Git进行版本控制 Git简介 安装Git 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 初始化Git仓库 配置全局用户信息 基本的Git命令 添加文件到暂存区 查看状态 提交更改 查看提交历史 工作流 分支管理 切换分支 合并分支 远程仓库 添加远程仓库 推…...

Ubuntu编译linux内核指南(适用阿里云、腾讯云等远程服务器;包括添加Android支持)

在 Ubuntu 上编译内核的步骤如下: 1、安装必要的依赖包: 这里和你chatgpt的略有不同 sudo apt-get update sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev dwarves 后续如果遇到“FAILED: load BTF from vmlinux: Invalid argum…...

[MySQL]DQL语句(一)

查询语句是数据库操作中最为重要的一系列语法。查询关键字有 select、where、group、having、order by、imit。其中imit是MySQL的方言&#xff0c;只在MySQL适用。 数据库查询又分单表查询和多表查询&#xff0c;这里讲一下单表查询。 基础查询 # 查询指定列 SELECT * FROM …...

GPT原理;ChatGPT 等类似的问答系统工作流程如下;当用户向 ChatGPT 输入一个问题后:举例说明;ChatGPT不是通过索引搜索的传统知识库

目录 GPT原理 GPT架构 GPT 主要基于 Transformer 的解码器部分 ChatGPT 等类似的问答系统工作流程如下: 用户输入 文本预处理 模型处理 答案生成 输出回答 当用户向 ChatGPT 输入一个问题后:举例说明 文本预处理: ChatGPT不是通过索引搜索的传统知识库 GPT GPT…...

目前最新最好用 NET 混淆工具 .NET Reactor V6.9.8

目前最新最好用 NET 混淆工具 .NET Reactor V6.9.8 1、.NET Reactor V6.9.8 功能简介2、官方下载 1、.NET Reactor V6.9.8 功能简介 业界领先的源代码保护 .NET Reactor通过多种方法来防止反编译&#xff0c;这些方法会将 .NET 程序集转换为任何现有工具都无法反编译的进程。…...

计算布尔二叉树的值

给你一棵 完整二叉树 的根节点&#xff0c;这棵树有以下特征&#xff1a; 叶子节点 要么值为 0 要么值为 1 &#xff0c;其中 0 表示 False &#xff0c;1 表示 True 。非叶子节点 要么值为 2 要么值为 3 &#xff0c;其中 2 表示逻辑或 OR &#xff0c;3 表示逻辑与 AND 。 …...

Java-I/O框架09:InputStreamReader、OutputStreamWriter使用

视频链接&#xff1a;16.24 转换流的使用_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Tz4y1X7H7?spm_id_from333.788.videopod.episodes&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5&p24 1.InputStreamReader使用 package com.yundait.Demo05;import java…...

Z-Image-Turbo-辉夜巫女数据预处理实战:模拟VLOOKUP实现提示词与风格模板匹配

Z-Image-Turbo-辉夜巫女数据预处理实战&#xff1a;模拟VLOOKUP实现提示词与风格模板匹配 你有没有遇到过这样的烦恼&#xff1f;每次用AI画图&#xff0c;想生成一个“赛博朋克”风格的图片&#xff0c;都得重新回忆或者翻找之前写好的那一长串复杂的提示词。或者团队里每个人…...

Phi-3-mini-4k-instruct-gguf应用落地:教育场景中的作业辅导与知识点提炼

Phi-3-mini-4k-instruct-gguf应用落地&#xff1a;教育场景中的作业辅导与知识点提炼 1. 教育场景中的AI助手需求 想象一下这样的场景&#xff1a;晚上10点&#xff0c;孩子还在为数学作业发愁&#xff0c;家长已经精疲力尽&#xff1b;老师批改着第50份作文&#xff0c;眼睛…...

LFM2.5-1.2B-Thinking-GGUF开源生态初探:与Ollama等工具的对比与集成

LFM2.5-1.2B-Thinking-GGUF开源生态初探&#xff1a;与Ollama等工具的对比与集成 1. 开源大模型本地部署生态概览 近年来&#xff0c;开源大模型本地部署工具呈现百花齐放的局面。从早期的单一模型加载器&#xff0c;发展到如今功能丰富的模型管理生态系统&#xff0c;开发者…...

AI大模型时代:微店商品数据API如何重构反向海淘决策

在AI大模型时代&#xff0c;微店商品数据API凭借覆盖下沉市场、小众货源、私域供给的独特优势&#xff0c;成为重构反向海淘决策的核心支撑&#xff0c;将传统“人工经验判断”升级为“数据采集→AI分析→自动决策→反馈优化”的全链路数据驱动模式&#xff0c;大幅提升选品精准…...

Z-Image-Turbo_Sugar脸部Lora模型服务运维指南:监控、日志与故障排查

Z-Image-Turbo_Sugar脸部Lora模型服务运维指南&#xff1a;监控、日志与故障排查 最近在帮一个做创意设计的朋友维护他们的AI图像生成服务&#xff0c;他们用的就是Z-Image-Turbo_Sugar这个专门生成特定风格人脸的Lora模型。朋友跟我吐槽&#xff0c;说服务时不时就“抽风”&a…...

5个核心功能让网盘用户彻底解决下载速度慢的问题

5个核心功能让网盘用户彻底解决下载速度慢的问题 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅雷云盘 …...

保姆级教程:在OBBDetection项目中为DOTA数据集定制检测结果可视化(mmdetection 2.2)

深度定制OBBDetection检测结果可视化&#xff1a;DOTA数据集高级实践指南 在旋转目标检测领域&#xff0c;DOTA数据集因其复杂的航拍场景和多角度目标特性&#xff0c;对结果可视化提出了独特挑战。本文将带您从零构建一套完整的可视化解决方案&#xff0c;涵盖从基础配置到高级…...

Beyond Compare 5 永久激活完全指南:从入门到精通

Beyond Compare 5 永久激活完全指南&#xff1a;从入门到精通 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 一、问题诊断&#xff1a;Beyond Compare 5授权痛点解析 1.1 评估期结束的功能限制…...

【Oracle篇】基于OGG 21c全程图形化实现9TB数据从Oracle 11g到19c的不停机迁移(上):微服务架构详解与微服务部署,及同步问题总览(第一篇,总共三篇)

&#x1f4ab;《博主主页》&#xff1a;    &#x1f50e; CSDN主页&#xff1a; 奈斯DB    &#x1f50e; IF Club社区主页&#xff1a; 奈斯、    &#x1f50e; 微信公众号&#xff1a; 奈斯DB &#x1f525;《擅长领域》&#xff1a;    &#x1f5c3;️ 数据库…...

Windows右键菜单效率革命:ContextMenuManager极简操作与深度定制指南

Windows右键菜单效率革命&#xff1a;ContextMenuManager极简操作与深度定制指南 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 每天面对电脑上杂乱的右键菜单&…...