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。
相关推荐
取名真是12 分钟前
Python 算法知识点从基础到进阶
开发语言·python·算法
罗西的思考28 分钟前
【轻量化复刻大模型 / KIMI K3】KDA 模块交互式演示
人工智能·算法·机器学习
nm_zfyjt3 小时前
信息流广告投放优化实践:线索成本评估模型与转化链路重构(家装建材案例)
算法·重构·内蒙古朋友圈广告服务商·内蒙古朋友圈获客
w_zero_one4 小时前
算法--构造
java·数据结构·算法
其实防守也摸鱼4 小时前
信创安全竞赛知识总结与题库
大数据·网络·人工智能·算法·安全·php
小超人诞生日记6 小时前
C++ 智能指针的使用及其原理详解
c++·算法
AiNightVision9 小时前
无人机夜视模块如何选择?——从参数指标到系统集成的完整选型指南
人工智能·算法·计算机视觉·车载系统·无人机·视频·智能硬件
牧羊人.33310 小时前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn
小郎君65810 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法