当前位置: 首页 > 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": {…...

【技术突破】douyin-downloader:重新定义抖音内容采集效率的智能引擎

【技术突破】douyin-downloader&#xff1a;重新定义抖音内容采集效率的智能引擎 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser …...

成电计算机复试面试:如何用一份‘心机’简历引导老师提问,并提前准备好答案?

计算机复试策略&#xff1a;如何用结构化简历设计引导面试走向 站在电子科技大学计算机复试的考场外&#xff0c;大多数考生都在反复背诵技术概念和项目细节&#xff0c;却很少有人意识到——面试本质上是一场精心设计的对话博弈。那些最终获得高分的考生&#xff0c;往往不是知…...

告别重复造轮子:用快马AI一键生成高复用性imToken集成代码模块

告别重复造轮子&#xff1a;用快马AI一键生成高复用性imToken集成代码模块 开发涉及钱包集成的DApp时&#xff0c;最让人头疼的就是那些重复性的基础代码。每次新项目都要重新写一遍连接钱包、处理授权、监听网络切换的逻辑&#xff0c;不仅浪费时间&#xff0c;还容易引入安全…...

Qwen3-ASR-1.7B实战教程:结合Punctuation Restoration模型提升标点准确率

Qwen3-ASR-1.7B实战教程&#xff1a;结合Punctuation Restoration模型提升标点准确率 语音识别技术已经相当成熟&#xff0c;但识别结果往往缺少标点符号&#xff0c;让长文本阅读变得困难。本文将教你如何将Qwen3-ASR-1.7B语音识别模型与标点恢复技术结合&#xff0c;获得既准…...

深入解析cufftPlanMany:从参数配置到高效FFT实现

1. 为什么需要cufftPlanMany&#xff1f; 第一次接触CUDA FFT时&#xff0c;很多人都是从cufftPlan1d、cufftPlan2d这些基础接口开始的。但当你真正处理实际工程问题时&#xff0c;会发现这些简单接口远远不够用。比如要处理批量信号、非连续内存数据、子区域FFT计算等场景时&a…...

BACnet4j实战:从模拟设备到点位数据采集的完整流程解析

1. BACnet4j与工业物联网数据采集入门 第一次接触BACnet协议时&#xff0c;我被各种专业术语搞得晕头转向。直到用BACnet4j成功读取到第一个温度传感器的数据&#xff0c;才真正理解这个协议的价值。BACnet/IP就像工业设备间的普通话&#xff0c;而BACnet4j就是让Java程序能说这…...

LightRAG架构解析:从图索引到双层检索的工程实现

1. LightRAG架构概览&#xff1a;为什么需要双层检索&#xff1f; 在传统RAG系统中&#xff0c;我们常常遇到两个核心痛点&#xff1a;信息碎片化和上下文缺失。想象一下&#xff0c;当你问"电动汽车的普及对城市空气质量有何影响"时&#xff0c;传统系统可能分别检索…...

Allegro PCB设计必备:3分钟搞定带钻孔数据的DXF文件导出(附常见错误排查)

Allegro PCB设计实战&#xff1a;高效导出带钻孔数据的DXF文件全攻略 在PCB设计领域&#xff0c;Allegro作为行业标杆工具&#xff0c;其文件输出质量直接关系到生产制造的准确性。特别是当设计需要与其他CAD系统协作或提交给PCB制造商时&#xff0c;DXF文件的完整性至关重要。…...

华为云AI开发认证HCCDA通关指南:从试题解析到实战应用

1. 华为云HCCDA认证&#xff1a;AI开发者的黄金敲门砖 最近两年&#xff0c;AI技术在各行各业的应用越来越广泛&#xff0c;很多开发者都在寻找能够系统学习AI开发的途径。华为云推出的HCCDA&#xff08;Huawei Cloud Certified Developer Associate&#xff09;认证&#xff0…...

广东省高级会计师评审辅导知名品牌

在职业发展的道路上&#xff0c;专业资格认证是许多财务从业者提升自我、拓宽职业路径的重要一环。广东省高级会计师评审&#xff0c;作为一项专业性强、要求严格的职业能力认定&#xff0c;其准备过程需要系统性的指导与支持。中山力朗教育咨询有限公司&#xff0c;作为一家立…...