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;
    }
}
相关推荐
程序员-King.2 分钟前
day107—同向双指针—无重复字符的最长字串(LeetCode-3)
算法·leetcode·双指针
风掣长空2 分钟前
【LeetCode】面试经典150题:合并两个有序数组
算法·leetcode·面试
im_AMBER5 分钟前
Leetcode 69 正整数和负整数的最大计数
数据结构·笔记·学习·算法·leetcode
fufu03116 分钟前
Linux环境下的C语言编程(三十六)
linux·c语言·开发语言·数据结构·算法
踢球的打工仔7 分钟前
前端html(1)
前端·算法·html
MicroTech20258 分钟前
MLGO微算法科技发布基于RANSAC-ISS-3DSC改进ICP的激光扫描仪点云快速配准算法
科技·算法·3d
_OP_CHEN11 分钟前
【算法基础篇】(二十六)数据结构封神!Trie 树从入门到爆杀算法题:拼音输入法、单词统计都靠它
数据结构·c++·算法·蓝桥杯·trie树·算法竞赛·acm/icpc
代码游侠14 分钟前
数据结构--队列
数据结构·笔记·学习·算法·链表
ゞ 正在缓冲99%…38 分钟前
2025.9.24华为软开
java·算法·华为
Dev7z42 分钟前
基于MATLAB实现SVM和集成特征的水稻病害图像识别系统
算法·机器学习·支持向量机