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

LeetCode热题100--101. 对称二叉树--简单

1. 题目

给你一个二叉树的根节点 root , 检查它是否轴对称。

示例 1:
在这里插入图片描述
输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:
在这里插入图片描述
输入:root = [1,2,2,null,3,null,3]
输出:false

2. 题解

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public boolean isSymmetric(TreeNode root) {return root == null || recur(root.left,root.right);}boolean recur(TreeNode L , TreeNode R){if(L == null && R == null) return true;if(L == null || R == null || L.val != R.val) return false;return recur(L.left , R.right) && recur(L.right , R.left);}
}

3. 解析

  1. public boolean isSymmetric(TreeNode root): 这是主方法,接收一个类型为TreeNode的参数root。这个参数表示二叉树的根节点。如果输入的根节点(也就是整个二叉树)不存在或者左子树和右子树对称(即recur函数返回true),那么方法返回true;否则,返回false。

  2. boolean recur(TreeNode L , TreeNode R){: 这是辅助递归方法。它接收两个类型为TreeNode的参数L和R,分别表示左子树的根节点和右子树的根节点。如果两棵子树都为空(即它们都是叶节点或空树),那么这个函数返回true;否则,它会判断以下条件:

  • 如果其中一棵子树为空但另一棵不为空,那么这两棵子树不能被视为镜像。因此,这两个分支的递归调用都将返回false。
  • 如果两棵子树都不为空且它们的根节点的值相等(即这些位置上的元素相同),那么我们需要比较左子树的左孩子和右子树的右孩子以及左子树的右孩子和右子树的左孩子。只有当这两个条件都满足时(也就是说两棵子树是镜像对应的),这个函数才返回true。
  1. return recur(L.left , R.right) && recur(L.right , R.left);: 在上面的条件判断之后,我们使用这行代码来递归地调用辅助方法recur(),以比较左子树的左孩子和右子树的右孩子以及左子树的右孩子和右子树的左孩子。
  • 如果这两组节点(左子树的左孩子和右子树的右孩子;以及左子树的右孩子和右子树的左孩子)都满足条件,那么这两个函数调用将返回true,并且整个表达式recur(L.left , R.right) && recur(L.right , R.left)也将返回true。
  • 否则,它会返回false。
http://www.lryc.cn/news/626288.html

相关文章:

  • 【Kafka】常见简单八股总结
  • 力扣 30 天 JavaScript 挑战 第36天 第8题笔记 深入了解reduce,this
  • Linux Shell 常用操作与脚本示例详解
  • CNN 在故障诊断中的应用:原理、案例与优势
  • DAY 50 预训练模型+CBAM模块
  • 排查Redis数据倾斜引发的性能瓶颈
  • VScode ROS文件相关配置
  • 什么是大数据平台?大数据平台和数据中台有什么关系?
  • 网络间的通用语言TCP/IP-网络中的通用规则3
  • A股大盘数据-20250819 分析
  • 【PyTorch】单对象分割项目
  • Arthas 全面使用指南:离线安装 + Docker/K8s 集成 + 集中管理
  • Python入门第11课:Python网络请求入门,使用requests库轻松获取网页数据
  • Linux的基本操作
  • 浅看架构理论(一)
  • RK3568 Linux驱动学习——Linux设备树
  • 【SQL优化案例】统计信息缺失
  • 51单片机拼接板(开发板积木)
  • oracle官网下载jdk历史版本,jdk历史版本下载
  • Pandas数据预处理中缺失值处理
  • 【数据结构】堆和二叉树详解(下)
  • JavaScript 性能优化实战:从分析到落地的全指南
  • 【Task01】:简介与环境配置(第一章1、2节)
  • 彻底清理旧版本 Docker 的痕迹
  • 3.Kotlin 集合 Set 所有方法
  • STL——string的使用(快速入门详细)
  • 让AI学会“边做边想“:ReAct的实战指南
  • 第9章 React与TypeScript
  • 46 C++ STL模板库15-容器7-顺序容器-双端队列(deque)
  • 人工智能统一信息结构的挑战与前景