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

(C++二叉树02) 翻转二叉树 对称二叉树 二叉树的深度

226、翻转二叉树

递归法:

交换两个结点可以用swap()方法

class Solution {
public:TreeNode* invertTree(TreeNode* root) {if(root == NULL) return NULL;TreeNode* tem = root->left;root->left = root->right;root->right = tem;invertTree(root->left);invertTree(root->right);return root;}
};

迭代法:

class Solution {
public:TreeNode* invertTree(TreeNode* root) {if(root == NULL) return NULL;stack<TreeNode*> sta;sta.push(root);while(!sta.empty()) {TreeNode* tem= sta.top();sta.pop();swap(tem->left, tem->right);if(tem->right) sta.push(tem->right);if(tem->left) sta.push(tem->left);}return root;}
};

101、对称二叉树

递归法:

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

104、二叉树的最大深度

递归法:

class Solution {
public:int depth(TreeNode* root) {if(root == NULL) return 0;int left = depth(root->left);int right = depth(root->right);return left > right ? left + 1 : right + 1;}int maxDepth(TreeNode* root) {if(root == NULL) return 0;return depth(root);}
};

迭代法:

class Solution {
public:int maxDepth(TreeNode* root) {if(root == NULL) return 0;queue<TreeNode*> que;int depth = 0;que.push(root);while(!que.empty()) {int size = que.size();depth++;for(int i = 0; i < size; i++) {TreeNode* tem = que.front();que.pop();if(tem->left) que.push(tem->left);if(tem->right) que.push(tem->right);}}return depth;}
};

111、二叉树的最小深度

递归法:

class Solution {
public:int depth(TreeNode* root) {if(root->left == NULL && root->right == NULL) {return 1;}else if(root->left != NULL && root->right == NULL) {return depth(root->left) + 1;}else if(root->left == NULL && root->right != NULL) {return depth(root->right) + 1;}int left = depth(root->left);int right = depth(root->right);return left > right ? right + 1 : left + 1;}int minDepth(TreeNode* root) {if(root == NULL) return 0;return depth(root);}
};

迭代法:

class Solution {
public:int minDepth(TreeNode* root) {if(root == NULL) return 0;queue<TreeNode*> que;int depth = 0;que.push(root);while(!que.empty()) {int size = que.size();depth++;for(int i = 0; i < size; i++) {TreeNode* tem = que.front();que.pop();if(tem->left == NULL && tem->right == NULL) {return depth;}if(tem->left) que.push(tem->left);if(tem->right) que.push(tem->right);}}return depth;}
};

相关文章:

(C++二叉树02) 翻转二叉树 对称二叉树 二叉树的深度

226、翻转二叉树 递归法&#xff1a; 交换两个结点可以用swap()方法 class Solution { public:TreeNode* invertTree(TreeNode* root) {if(root NULL) return NULL;TreeNode* tem root->left;root->left root->right;root->right tem;invertTree(root->l…...

高阶面试-mongodb

mongodb的特点&#xff0c;为什么使用他 nosql数据库&#xff0c;前端到后端到数据库&#xff0c;都是json&#xff0c;无模式&#xff0c;数据模型发生变更&#xff0c;不需要强制更新表结构&#xff0c;可以快速实现需求迭代。 天生分布式&#xff0c;高可用&#xff0c;处…...

MySQL数据库慢查询日志、SQL分析、数据库诊断

1 数据库调优维度 业务需求&#xff1a;勇敢地对不合理的需求说不系统架构&#xff1a;做架构设计的时候&#xff0c;应充分考虑业务的实际情况&#xff0c;考虑好数据库的各种选择(读写分离?高可用?实例个数?分库分表?用什么数据库?)SQL及索引&#xff1a;根据需求编写良…...

[短笔记] Ubuntu配置环境变量的最佳实践

结论&#xff1a; 不确定是否要设为系统&#xff0c;则先针对当前用户设&#xff0c;写~/.profile确定为系统级&#xff0c;写/etc/environment&#xff0c;注意无需export不推荐写在~/.bashrc&#xff08;Ubuntu不推荐&#xff0c;理由见references&#xff09; References&…...

怎样在 PostgreSQL 中优化对多表关联的连接条件选择?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 怎样在 PostgreSQL 中优化对多表关联的连接条件选择一、理解多表关联的基本概念二、选择合适的连接条件…...

【Flowable | 第四篇】flowable工作流多任务实例节点实现会签/或签

文章目录 5.flowable工作流多任务实例节点实现会签/或签5.1会签/或签概念5.2多实例配置说明5.3会签例子5.3.1用户候选人配置5.3.2多实例配置5.3.3执行监听器配置5.3.5测试 5.flowable工作流多任务实例节点实现会签/或签 5.1会签/或签概念 我们在本篇中&#xff0c;将使用多任…...

解决C#读取US7ASCII字符集oracle数据库的中文乱码

&#x1f468; 作者简介&#xff1a;大家好&#xff0c;我是Taro&#xff0c;全栈领域创作者 ✒️ 个人主页&#xff1a;唐璜Taro &#x1f680; 支持我&#xff1a;点赞&#x1f44d;&#x1f4dd; 评论 ⭐️收藏 文章目录 前言一、解决方法二、安装System.Data.OleDb连接库三…...

Linux驱动开发中设备节点、虚拟节点、逻辑节点之间的区别与关系

概述 在Linux DTS中我们可以看到各种各样的节点&#xff0c;每个节点都是对某一物理设备或功能抽象或具体的描述 设备节点 设备节点是对物理设备的一种具体的描述&#xff0c;它一般包含设备的寄存器地址、设备的类型、中断、时钟频率这些通用信息&#xff0c;除了这些通用信…...

【iOS】——ARC源码探究

一、ARC介绍 ARC的全称Auto Reference Counting. 也就是自动引用计数。使用MRC时开发者不得不花大量的时间在内存管理上&#xff0c;并且容易出现内存泄漏或者release一个已被释放的对象&#xff0c;导致crash。后来&#xff0c;Apple引入了ARC。使用ARC&#xff0c;开发者不再…...

ubuntu服务器安装labelimg报错记录

文章目录 报错提示查看报错原因安装报错 报错提示 按照步骤安装完labelimg后&#xff0c;在终端输入labelImg后&#xff0c;报错&#xff1a; (labelimg) rootinteractive59753:~# labelImg ………………Got keys from plugin meta data ("xcb") QFactoryLoader::Q…...

Transformer中Decoder的计算过程及各部分维度变化

在Transformer模型中&#xff0c;解码器的计算过程涉及多个步骤&#xff0c;主要包括自注意力机制、编码器-解码器注意力和前馈神经网络。以下是解码器的详细计算过程及数据维度变化&#xff1a; 1. 输入嵌入和位置编码 解码器的输入首先经过嵌入层和位置编码&#xff1a; I…...

QT实现滑动页面组件,多页面动态切换

这篇文章主要介绍了Qt实现界面滑动切换效果&#xff0c;对大家的学习或工作具有一定的参考借鉴价值&#xff0c;需要的朋友可以参考下。 一、简述 一个基于Qt的动态滑动页面组件。 二、 设计思路 1、自定义StackWidget类&#xff0c;继承自QWidget&#xff0c;实现一个堆叠…...

使用Python-docx库创建Word文档

哈喽,大家好,我是木头左! 简介 Python-docx是一个用于处理Microsoft Word文档的Python库。它允许用户创建、修改和提取Word文档的内容。在本文中,将详细介绍如何使用Python-docx库创建一个新的Word文档。 安装Python-docx库 要使用Python-docx库,首先需要安装它。可以使…...

C# 设计一个可变长度的数据通信协议编码和解码代码。

设计一个可变长度的数据通信协议编码和解码代码。 要有本机ID字段&#xff0c;远端设备ID字段&#xff0c;指令类型字段&#xff0c;数据体字段&#xff0c;校验字段。其中一个要求是&#xff0c;每次固定收发八个字节&#xff0c;单个数据帧超过八个字节需要分包收发。对接收的…...

【MATLAB库函数系列】MATLAB库函数pwelch之功率谱估计的详解及实现

功率谱估计 由于实际信号通常是非定常的,我们只能假设其在10ms的时间段内是定常的,并在此基础上对短的定常信号求PSD或者能谱。 窗函数的作用就是将原始的信号分割成一段段可以计算PSD和能谱的短信号,并且保证了周期结构的连续性、避免了频谱泄漏。不同的窗函数具有不同的…...

科技出海|百分点科技智慧政务解决方案亮相非洲展会

近日&#xff0c;华为非洲全联接大会在南非约翰内斯堡举办&#xff0c;吸引政府官员行业专家、思想领袖、生态伙伴等2,000多人参会&#xff0c;百分点科技作为华为云生态合作伙伴&#xff0c;重点展示了智慧政务解决方案&#xff0c;发表《Enable a Smarter Government with Da…...

Prometheus 云原生 - Prometheus 数据模型、Metrics 指标类型、Exporter 相关

目录 开始 Prometheus 数据类型 简单理解 时序样本 格式 和 命名要求 Metrics 指标类型 Counter 计数器 Gauge Histogram Summary Exporter 相关 概述 Exporter 类型 Exporter 规范 开始 Prometheus 数据类型 简单理解 a&#xff09;安装好 Prometheus 后会暴露…...

Qt窗口程序整理汇总

到今日为止&#xff0c;通过一个个案例的实验&#xff0c;逐步熟悉了 Qt6下 窗体界面开发的&#xff0c;将走过的路&#xff0c;再次汇总整理。 Qt Splash样式的登录窗https://blog.csdn.net/castlooo/article/details/140462768 Qt实现MDI应用程序https://blog.csdn.net/cast…...

简单实现一个本地ChatGPT web服务(langchain框架)

简单实现一个本地ChatGPT 服务&#xff0c;用到langchain框架&#xff0c;fastapi,并且本地安装了ollama。 依赖安装&#xff1a; pip install langchain pip install langchain_community pip install langchain-cli # langchain v0.2 2024年5月最新版本 pip install bs4 pi…...

Elasticsearch-多边形范围查询(8.x)

目录 一、字段设计 二、数据录入 三、查询语句 四、Java代码实现 开发版本详见&#xff1a;Elasticsearch-经纬度查询(8.x-半径查询)_es经纬度范围查询-CSDN博客 一、字段设计 PUT /aoi_points {"mappings": {"properties": {"location": {…...

AXOrderBook:解密A股订单簿重建与FPGA硬件加速的深度技术方案

AXOrderBook&#xff1a;解密A股订单簿重建与FPGA硬件加速的深度技术方案 【免费下载链接】AXOrderBook A股订单簿工具&#xff0c;使用逐笔行情进行订单簿重建、千档快照发布、各档委托队列展示等&#xff0c;包括python模型和FPGA HLS实现。 项目地址: https://gitcode.com…...

别再只盯着虚短虚断!运放设计必须掌握的6个非理想参数(附MCP6N16实测数据)

运算放大器非理想特性实战指南&#xff1a;从理论到MCP6N16实测 在嵌入式系统设计中&#xff0c;运算放大器如同精密仪器中的齿轮&#xff0c;其微小偏差可能导致整个测量系统的崩溃。许多工程师在初期学习阶段被"虚短虚断"的理想模型所束缚&#xff0c;直到实际项目…...

MusePublic实战教程:多语言Prompt支持(日/韩/法/西)本地化适配

MusePublic实战教程&#xff1a;多语言Prompt支持&#xff08;日/韩/法/西&#xff09;本地化适配 你是不是也遇到过这样的烦恼&#xff1f;看到一张惊艳的艺术人像&#xff0c;想用MusePublic复刻出来&#xff0c;但脑子里蹦出的描述词全是中文、日文或者韩文&#xff0c;对着…...

考研党必看!用Notion+Obsidian打造你的线性代数矩阵复习神器(附模板)

考研党必看&#xff01;用NotionObsidian打造你的线性代数矩阵复习神器&#xff08;附模板&#xff09; 线性代数作为考研数学的重要部分&#xff0c;矩阵理论更是其中的核心难点。传统的纸质笔记虽然直观&#xff0c;但难以实现知识点的快速检索、动态更新和跨章节关联。本文将…...

告别重复造轮子:用快马AI一键生成高安全性的标准化登录模块

告别重复造轮子&#xff1a;用快马AI一键生成高安全性的标准化登录模块 最近在开发一个需要用户系统的项目时&#xff0c;遇到了一个常见但耗时的问题&#xff1a;如何快速实现一个既安全又美观的登录模块。相信很多开发者都深有体会&#xff0c;每次新建项目都要从头开始写登…...

Arctic与ArcticDB对比分析:为何选择下一代数据存储方案

Arctic与ArcticDB对比分析&#xff1a;为何选择下一代数据存储方案 【免费下载链接】arctic High performance datastore for time series and tick data 项目地址: https://gitcode.com/gh_mirrors/ar/arctic 在金融数据分析和时间序列处理领域&#xff0c;高性能数据…...

Qwen2-VL-2B-Instruct实战教程:Text-Text语义距离计算在合同比对中的应用

Qwen2-VL-2B-Instruct实战教程&#xff1a;Text-Text语义距离计算在合同比对中的应用 1. 引言&#xff1a;当合同审查遇上AI语义理解 想象一下这个场景&#xff1a;你手头有两份合同&#xff0c;一份是标准模板&#xff0c;另一份是客户发来的修改版。你需要快速找出两份合同…...

别再瞎调优先级了!STM32CubeMX配置FreeRTOS任务调度器的5个实战避坑点

别再瞎调优先级了&#xff01;STM32CubeMX配置FreeRTOS任务调度器的5个实战避坑点 刚接触FreeRTOS的嵌入式开发者&#xff0c;往往会在STM32CubeMX的图形化配置界面里迷失方向。那些看似简单的下拉菜单和复选框&#xff0c;背后却藏着让系统崩溃的陷阱。我曾见过一个工程师将任…...

告别手动更新!用Python+Pandas快速解析通达信tnf文件,构建本地股票代码库

用PythonPandas高效解析通达信TNF文件&#xff1a;打造自动化股票代码库 每次手动更新股票代码库时&#xff0c;那些重复性操作总让我想起学生时代抄写课文的场景——机械、耗时且容易出错。作为量化研究员&#xff0c;我们真正需要的是把时间花在策略优化上&#xff0c;而不是…...

事务隔离级别全景解析:从脏读到幻读的深度剖析

事务隔离级别全景解析&#xff1a;从脏读到幻读的深度剖析在数据库并发控制的宏大叙事中&#xff0c;事务隔离级别扮演着“交通规则”的角色。当多个用户同时访问和修改数据时&#xff0c;如果没有合理的隔离机制&#xff0c;数据的一致性和完整性将面临巨大风险。本文将深入探…...