101. 对称二叉树 - 力扣(LeetCode)

题目描述

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

题目示例

输入:root = [1,2,2,3,4,4,3]

输出:true

解题思路

首先想清楚,判断对称二叉树要比较的是哪两个节点,要比较的可不是左右节点!

对于二叉树是否对称,要比较的是根节点的左子树与右子树是不是相互翻转的,理解这一点就知道了其实我们要比较的是两个树(这两个树是根节点的左右子树),所以在递归遍历的过程中,也是要同时遍历两棵树。

比较的是两个子树的里侧和外侧的元素是否相等。

本题遍历只能是"后序遍历",因为我们要通过递归函数的返回值来判断两个子树的内侧节点和外侧节点是否相等。

参考代码

java 复制代码
class Solution {
    public boolean isSymmetric(TreeNode root) {
        // 采用后序遍历,因为左右孩子需要给上层返回信息
        return compare(root.left, root.right);
    }

    public boolean compare(TreeNode left, TreeNode right) {
        // 终止条件
        if(left != null && right == null) return false;
        else if(left == null && right != null) return false;
        // 到叶子结点
        else if(left == null && right == null) return true;
        else if(left.val != right.val) return false;
        // 比较外侧
        boolean outside = compare(left.left, right.right);
        // 比较内侧
        boolean inside = compare(left.right, right.left);
        // 综合考虑内外侧
        boolean result = outside && inside;
        return result;
    }
}
相关推荐
deepdata_cn4 分钟前
模型预测控制(MPC)算法
算法
独自破碎E9 分钟前
如何用最短替换让字符串变平衡?
java·开发语言·算法·leetcode
Jasmine_llq23 分钟前
《P1082 [NOIP 2012 提高组] 同余方程》
算法·数学建模·质因数分解(试除法)·快速幂(模幂运算)·欧拉函数计算·基于质因数分解
算家计算26 分钟前
AI真的懂你!阿里发布Qwen3-Omni-Flash 全模态大模型:超强交互,人设任选
人工智能·算法·机器学习
l1t26 分钟前
利用Duckdb求解Advent of Code 2025第9题 最大矩形面积
数据库·sql·算法·duckdb·advent of code
Swift社区26 分钟前
LeetCode 446 - 等差数列划分 II - 子序列
算法·leetcode·职场和发展
hetao173383741 分钟前
2025-12-10 hetao1733837的刷题笔记
c++·笔记·算法
步达硬件1 小时前
【matlab】代码库-一维线性插值
数据结构·算法·matlab
myw0712051 小时前
湘大oj-数码积性练习笔记
c语言·数据结构·笔记·算法
普贤莲花1 小时前
得物面试总结20251210
程序人生·算法·leetcode