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. 题解

java 复制代码
/**
 * 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。
相关推荐
生成论实验室7 分钟前
《事件关系阴阳博弈动力学:识势应势之道》第二篇:阴阳博弈——认知的动力学基础
数据结构·人工智能·科技·神经网络·算法
风筝在晴天搁浅37 分钟前
字节高频题 小于n的最大数
算法
LabVIEW开发39 分钟前
LabVIEW水力机组空蚀在线监测
算法·labview·labview知识·labview功能·labview程序
AI科技星44 分钟前
科幻艺术书本封面:《全域数学》第一部·数术本源 第三卷 代数原本(P95-141)完整五级目录【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算
风筝在晴天搁浅1 小时前
LeetCode 92.反转链表Ⅱ
算法·leetcode·链表
weisian1511 小时前
基础篇--概念原理-2-参数是什么?——从原理到实战,一篇讲透
面试·职场和发展·模型参数·7b和70b·参数=规则,不是原始数据
王老师青少年编程1 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【贪心与二分判定】:数列分段 Section II
c++·算法·贪心·csp·信奥赛·二分判定·数列分段 section ii
V搜xhliang02461 小时前
OpenClaw科研全场景用法:从文献到实验室的完整自动化方案
运维·开发语言·人工智能·python·算法·microsoft·自动化
天真小巫2 小时前
2026.5.2总结
职场和发展
汉克老师2 小时前
GESP2025年3月认证C++五级( 第三部分编程题(2、原根判断))
c++·算法·模运算·gesp5级·gesp五级·原根·分解质因数