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。
相关推荐
大熊背3 分钟前
如何利用Lv值实现三级降帧
算法·自动曝光·lv·isppipeline
大尚来也19 分钟前
驾驭并发:.NET多线程编程的挑战与破局之道
java·前端·算法
向阳而生,一路生花24 分钟前
深入浅出 JDK7 HashMap 源码分析
算法·哈希算法
君义_noip1 小时前
信息学奥赛一本通 4150:【GESP2509七级】⾦币收集 | 洛谷 P14078 [GESP202509 七级] 金币收集
c++·算法·gesp·信息学奥赛·csp-s
摸个小yu1 小时前
【力扣LeetCode热题h100】链表、二叉树
算法·leetcode·链表
汀、人工智能1 小时前
[特殊字符] 第93课:太平洋大西洋水流问题
数据结构·算法·数据库架构·图论·bfs·太平洋大西洋水流问题
ZPC82101 小时前
rviz2 仿真控制器与真实机器人切换
人工智能·算法·机器人
澈2071 小时前
双指针,数组去重
c++·算法
小辉同志2 小时前
207. 课程表
c++·算法·力扣·图论
CheerWWW2 小时前
深入理解计算机系统——位运算、树状数组
笔记·学习·算法·计算机系统