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

二叉树OJ题之二

今天我们一起来看一道判断一棵树是否为对称二叉树的题,力扣101题,

https://leetcode.cn/problems/symmetric-tree/

 我们首先先来分析这道题,要判断这道题是否对称,我们首先需要判断的是这颗树根节点的左右子树是否对称,所以我们比较对象是根节点的左右子树,那我们不妨自己写一个函数my_isSymmetric,参数就是

bool my_isSymmetric(struct TreeNode* leftroot,struct TreeNode* rightroot),我们用这个函数来判断这棵树的左右子树是否对称,首先我们要判断如果

左右子树都是空树呢?也就是这棵树只有一个根节点,这样的话也还算对称的,即

if(leftroot==NULL&&rightroot==NULL){return true;}

左右子树都为空的情况判断了,现在判断有一边为空的情况呢?肯定就不对称了,即

if(leftroot==NULL||rightroot==NULL){return false;}

有人会疑问为什么这里的连接符号用||,注意,程序走到这里的前提是这棵树的左右子树不为空,即左右子树两边不会同时为空,所以用||符号如果leftroot==NULL就不会走后面rightroot==NULL,如果leftroot!=NULL,走到后面判断right==NULL是否为空,如果两边有一边为空,这棵树肯定就不对称返回false;

下面,程序走过上面那一步那就证明左右子树都不为空,那我们只需要判断leftroot的val和rightroot的val是否相等就可以了,如果不相等返回false,即

if(leftroot->val!=rightroot->val){return false;}

这个时候程序还没有返回,那就是上述步骤都顺利通过,那就递归判断leftroot的左子树和righttoor的右子树 和 leftroot的右子树和right的左子树是否相等就可以了,

 return my_isSymmetric(leftroot->left,rightroot->right)&&my_isSymmetric(leftroot->right,rightroot->left);

这个函数到这里就封装完毕了,我们只需要在给的isSymmetric下面调用自己的my_isSymmetric就可以啦,即

 return my_isSymmetric(root->left,root->right);

 完整代码

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
bool my_isSymmetric(struct TreeNode* leftroot,struct TreeNode* rightroot)
{if(leftroot==NULL&&rightroot==NULL)//判断左右子树是否都为空{return true;}if(leftroot==NULL||rightroot==NULL)//判断是由有一边为空{return false;}if(leftroot->val!=rightroot->val)//判断左右子树val是否相等{return false;}return my_isSymmetric(leftroot->left,rightroot->right)&&my_isSymmetric(leftroot->right,rightroot->left);//左子树的左子树和右子树的右子树比较,左子树的右子树和右子树的左子树比较,二者必须同时满足;} 
bool isSymmetric(struct TreeNode* root) {return my_isSymmetric(root->left,root->right);
}

相关文章:

二叉树OJ题之二

今天我们一起来看一道判断一棵树是否为对称二叉树的题,力扣101题, https://leetcode.cn/problems/symmetric-tree/ 我们首先先来分析这道题,要判断这道题是否对称,我们首先需要判断的是这颗树根节点的左右子树是否对称&#xff0…...

MySql表中添加emoji表情

共五处需要修改。 语句执行修改: ALTER TABLE xxxxx CONVERT TO CHARACTER SET utf8mb4;...

【新手解答1】深入探索 C 语言:变量名、形参 + 主调函数、被调函数 + 类和对象 + 源文件(.c 文件)、头文件(.h 文件)+ 库

C语言的相关问题解答 写在最前面目录 问题1变量名与变量的关系与区别变量和数据类型形参(形式参数)的概念 问题2解析:主调函数和被调函数延伸解析:主调函数对于多文件程序的理解总结 问题3类和对象变量和数据类型变量是否为抽象的…...

2023最新的软件测试热点面试题(答案+解析)

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…...

NCo3.1(08) - Nco3 服务器端编程

本篇博文不再重复ABAP调用外部服务器的基础,只介绍 NCo3 开发的过程和要点。需要了解相关知识点的小伙伴们自行参考: SAP接口编程 之JCo3.0系列(06) - Jco服务器端编程 PyRFC 服务器端编程要点 创建项目 新建一个 Console 项目,选择 .Net …...

【代码随想录】算法训练计划36

贪心 1、435. 无重叠区间 题目: 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 思路: 贪心,重叠个数,和射气球一样,重叠区间…...

Python (十五) 面向对象之多继承问题

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…...

广域网加速技术

摘要: 随着企业数字化转型快速发展,越来越多企业将IT系统、应用和服务部署到云上,以实现更高效、灵活的管理和使用。这就对广域网提出了更高的要求,而广域网线路往往存在带宽费用昂贵、服务质量不可靠等问题。为了改善用户体验&am…...

构建智能医患沟通:陪诊小程序开发实战

在医疗科技的浪潮中,陪诊小程序的开发成为改善医患沟通的创新途径之一。本文将介绍如何使用Node.js和Express框架构建一个简单而强大的陪诊小程序,实现患者导诊和医生咨询功能。 1. 安装Node.js和Express 首先确保已安装Node.js,然后使用以…...

插入区间[中等]

优质博文:IT-BLOG-CN 一、题目 给你一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1&#x…...

Android Bitmap 模糊效果实现 (二)

文章目录 Android Bitmap 模糊效果实现 (二)使用 Vukan 模糊使用 RenderEffect 模糊使用 GLSL 模糊RS、Vukan、RenderEffect、GLSL 效率对比 Android Bitmap 模糊效果实现 (二) 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134656140 最新更新地址 https:/…...

初识Java 18-4 泛型

目录 泛型存在的问题 在泛型中使用基本类型 实现参数化接口 类型转换和警告 无法实现的重载 基类会劫持接口 自限定类型 奇异递归类型 自限定 自限定提供的参数协变性 本笔记参考自: 《On Java 中文版》 泛型存在的问题 接下来讨论的,是在泛型…...

家政保洁预约小程序app开发特点有哪些?

家政预约服务小程序APP开发的特点介绍; 1. 低成本:用户通过手机APP下单,省去了中介费用,降低了雇主的雇佣成本。 2. 高收入:家政服务人员通过手机APP接单,省去了中介费用,从而提高了服务人员的…...

【JavaEE初阶】 HTTP响应报文

文章目录 🌲序言🎍200 OK🍀404 Not Found🎄403 Forbidden🌴405 Method Not Allowed🎋500 Internal Server Error🌳504 Gateway Timeout🌲302 Move temporarily🎍301 Move…...

PTA: 螺旋矩阵

题目 所谓“螺旋矩阵”&#xff0c;是指对任意给定的N&#xff0c;将1到NN的数字从左上角第1个格子开始&#xff0c;按顺时针螺旋方向顺序填入NN的方阵里。本题要求构造这样的螺旋方阵。 格式 输入格式: 输入在一行中给出一个正整数N&#xff08;<10&#xff09;。 输出…...

SparkSQL远程调试(IDEA)

启动Intellij IDEA&#xff0c;打开spark源码项目&#xff0c;配置远程调试 Run->Edit Configuration 启动远程spark-sql spark-sql --verbose --driver-java-options "-Xdebug -Xrunjdwp:transportdt_socket,servery,suspendy,address5005"运行远程调试&#xf…...

Vue2 Vue3 响应式实现原理

Vue2 和 Vue3 的响应式实现原理有所不同。 Vue2 响应式实现原理&#xff1a; Vue2 使用 Object.defineProperty() 方法来实现数据劫持&#xff0c;从而实现数据的响应式更新。具体步骤如下&#xff1a; 首先&#xff0c;在初始化阶段&#xff0c;遍历 data 对象的所有属性&a…...

Android Tombstone 与Debuggerd 原理浅谈

一、前言 Android系统类问题主要有stability、performance、power、security。tombstoned是android平台的一个守护进程&#xff0c;它注册成3个socket服务端&#xff0c;客户端封装在crash_dump和debuggerd_client。 crash_dump用于跟踪定位C crash&#xff0c; debuggerd_cli…...

Matlab 三维电力线重建

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 之前曾经讨论过关于悬链线方程的曲线拟合点云最小二乘法拟合曲线,在这篇博客中其实拟合的是悬链线的一种近似形式,但对于大多数情况下已经够用了。方程如下所示: z = A ( x 2 + y 2 ) +...

GoLang Filepath.Walk遍历优化

原生标准库在文件量过大时效率和内存均表现不好 1400万文件遍历Filepath.Walk 1400万文件重写直接调用windows api并处理细节 结论 1400万文件遍历时对比 对比条目filepath.walkwindows api并触发黑科技运行时间710秒22秒内存占用480M38M 关键代码 //超级快的文件遍历 fun…...

别再瞎调参了!HuggingFace Trainer微调BERT/ViT的保姆级避坑指南(附ArcFace实战代码)

HuggingFace Trainer微调实战&#xff1a;从参数陷阱到模型优化的深度拆解 当你第5次看到验证集准确率在0.85附近震荡不前&#xff0c;而训练损失仍在持续下降时&#xff0c;是否开始怀疑自己选择的优化器、学习率或损失函数&#xff1f;这不是个例——超过60%的NLP工程师在使用…...

QW_Sensors嵌入式传感器驱动库详解

1. QW_Sensors 库概述QW_Sensors 是一个面向硬件开发者的轻量级嵌入式传感器驱动库&#xff0c;专为 QW Shield 硬件平台设计。该库并非通用型多平台抽象层&#xff0c;而是深度耦合于 QW Shield 的物理布局、供电逻辑、通信拓扑与固件约束&#xff0c;其核心价值在于将底层硬件…...

TIKTOK 2026 爆单公式:SOUNDVIEW 本土化内容 + 货架场搜索,双轮驱动 GPM 飙升 60%!

2026 年&#xff0c;TikTok Shop 的流量格局已经发生了翻天覆地的变化。 如果说过去两年是“内容为王”的短视频混战时代&#xff0c;那么 2026 年则是“内容场 货架场”双轮驱动的红利爆发期。根据最新行业数据显示&#xff0c;TikTok 商城搜索场的 GPM&#xff08;千次曝光…...

HoRain云--OpenCod安装

&#x1f3ac; HoRain 云小助手&#xff1a;个人主页 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …...

内存泄漏的定位技巧:以Java应用为例

在复杂的软件系统中&#xff0c;内存泄漏犹如一颗隐形的定时炸弹&#xff0c;其破坏力随着系统运行时间的增长而累积。对于软件测试从业者而言&#xff0c;掌握高效、精准的内存泄漏定位技巧&#xff0c;不仅是保障系统稳定性的关键&#xff0c;更是提升测试深度与专业性的重要…...

营销短信接口接入指引:新手开发者如何快速掌握营销短信API的调用技巧

在电商促销、会员运营、活动推送等业务场景中&#xff0c;营销短信接口接入是实现批量用户触达的关键技术环节。很多新手开发者在对接时&#xff0c;常因签名规则不清、参数格式错误、请求结构不规范导致调试效率低下。本文将从原理拆解、实战编码、错误排查三个维度&#xff0…...

2025届学术党必备的六大降重复率助手推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 提高人工智能生成内容即AIGC的检测难度&#xff0c;关键之处在于增强文本的自然特性与个性化…...

三步生成炫酷3D魔鬼面具:用快马AI快速构建交互式视觉原型

今天想和大家分享一个超实用的技巧——如何用InsCode(快马)平台快速生成3D魔鬼面具的交互式原型。作为一个经常需要做创意展示的设计师&#xff0c;这个工具真的帮我省去了大量开发时间。 从创意到原型的极速转换 以前做3D展示需要先建模再写代码&#xff0c;现在只需要在快马平…...

避雷针保护范围计算公式

避雷针保护范围计算公式 Rx=√H(2Hr-H)-√Hx(2Hr-Hx) Rd=√H(2Hr-H) 其中: Rx---避雷针在Hx高度平面上的保护半径M Hr---滚球半径M Hx---被保护物体高度M H---避雷针的计算高度M Rd---避雷针在地面上的保护半径M Rx=1.6Ha/(1+Hx/H) Rx---避雷针在Hx高度平面上的保护…...

Less 教程

Less 教程 引言 Less(Leaner Style Sheets)是一种由Sass作者开发的开源CSS预处理器。它增加了变量、混合(Mixins)、函数等特性,使CSS更加强大、灵活和易于维护。本教程将为您详细介绍Less的基本用法,帮助您快速上手。 Less 简介 什么是Less? Less 是一个 CSS 预处理…...