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

力扣刷题 -- 101.对称二叉树

 题目与示例

 思路分析

对称二叉树,说白了就是镜像对称,要解决这道题,我们需要分析镜像的特点。

就以示例1来说:根结点的左孩子和右孩子的值相同;

再进一步看,欸发现 2 结点的左孩子和右侧 2 结点的右孩子是相同的;

左侧 2 结点的右孩子和 右侧 2 结点的左孩子相同;

欸,是不是我只要满足结点的左孩子的值和结点右孩子的值一样,结点右孩子和结点左孩子一样就可以解决这道题呢?

这里我们要注意传参,如果只有根结点那还挺好处理,如果左右子树都不为空,我们要分别处理2棵子树!!!

欸,有人问为什么要传2个参数?

我们知道二叉树的遍历是需要递归的,只要遇到递归结束的条件,才会依次销毁空间返回;只有左侧递归处理完,才能处理右侧,但在这里我们要两侧都遍历。

注意:有两种特殊情况

情况1:空树,属于对称的树;

情况2:树只有根结点,是属于对称的树;

情况3:有1棵子树为空树(即左子树为空但右子树不为空;左子树不为空右子树为空),不是对称的树。

 千万不能漏掉这两种情况!!!

代码实现 

 typedef struct TreeNode TreeNode;//判断是否对称bool isok(struct TreeNode* root1,struct TreeNode* root2){//情况2:树只有根结点,是属于对称的树;if(root1 == NULL && root2 == NULL){return true;}//情况3:有1棵子树为空树if(root1 == NULL || root2 == NULL){return false;}if(root1->val != root2->val){return false;}return isok(root1->left,root2->right)  && isok(root1->right,root2->left);}
bool isSymmetric(struct TreeNode* root) {//情况1:空树if(root == NULL){return true;}return isok(root->left,root->right);
}
http://www.dtcms.com/a/291760.html

相关文章:

  • JAVA API (三):从基础爬虫构建到带条件数据提取 —— 详解 URL、正则与爬取策略
  • 【网工】学而思:生成树协议STP原理与应用
  • 美团视觉算法面试30问全景精解
  • Java内部类与Object类深度解析
  • 高层功能架构详解 - openExo
  • GitHub新手生存指南:AI项目版本控制与协作实战
  • 医院信息系统(HIS)切换实施方案与管理技术分析
  • 静态登录界面
  • Mosaic数据增强介绍
  • 《C++初阶之STL》【string类:详解 + 实现】
  • 【React 入门系列】React 组件通讯与生命周期详解
  • Redis 初识
  • SpringMVC快速入门之核心配置详解
  • 【安卓笔记】用MVC、MVP、MVVM来实现井字棋案例
  • 厌氧菌数据挖掘可行性评估报告
  • 【Spark征服之路-3.7-Spark-SQL核心编程(六)】
  • 解决栅格数据裁剪矢量数据问题两种方法,ArcGIS解决与PYTHON解决
  • Ajax第一天
  • uniapp各大平台导航组件
  • Taro 网络 API 详解与实用案例
  • JavaScript AJAX 实现,演示如何将 Token 添加到 Authorization
  • 异地服务器备份Mysql数据
  • 电子电气架构 --- 从软件质量看组织转型路径
  • 基于Patroni实现PostgreSQL数据库高可用
  • postgresql使用记录 SCRAM authentication requires libpq version 10 or above
  • Nginx防盗链和Keepalived
  • VirtualBox安装提示security安全问题
  • 【coze扣子】第1篇:coze快速入门
  • 消息队列学习
  • 3.4 安全-分布式-数据库-挖掘