手撕算法-对称二叉树

力扣101. 对称二叉树

链接

https://leetcode.cn/problems/symmetric-tree/description/

题目描述

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

示例1:

此树是对称的。

示例2:

此树也是对称的

示例3:

此树不对称

思路

一颗树对称的前提是,左右子节点同时存在或不存在且:

  1. left.val == right.val
  2. left.left.val == right.right.val
  3. left.right.val == right.left.val

自顶向下,判断每对子节点是不是对称的。

代码

java 复制代码
class Solution {
    public boolean isSymmetric(TreeNode root) {
        return isMirror(root, root);
    }

    public boolean isMirror(TreeNode t1, TreeNode t2) {
        if (t1 == null && t2 == null) return true; // 都为空,对称
        if (t1 == null || t2 == null) return false; // 其中一个非空,另一个为空,不对称
        // 值相等,且左右节点也是对称的
        return (t1.val == t2.val)
            && isMirror(t1.right, t2.left)
            && isMirror(t1.left, t2.right);
    }
}

面试公司

  • 字节跳动
相关推荐
油泼辣子多加12 小时前
【信创】算法开发适配
人工智能·深度学习·算法·机器学习
Aaron158813 小时前
AD9084和Versal RF系列具体应用案例对比分析
嵌入式硬件·算法·fpga开发·硬件架构·硬件工程·信号处理·基带工程
laocooon52385788613 小时前
插入法排序 python
开发语言·python·算法
wuhen_n13 小时前
LeetCode -- 1:两数之和(简单)
javascript·算法·leetcode·职场和发展
林shir15 小时前
Java基础1.7-数组
java·算法
Jeremy爱编码15 小时前
leetcode课程表
算法·leetcode·职场和发展
甄心爱学习15 小时前
SVD求解最小二乘(手写推导)
线性代数·算法·svd
努力学算法的蒟蒻15 小时前
day46(12.27)——leetcode面试经典150
算法·leetcode·面试
Blockbuater_drug16 小时前
InChIKey: 分子的“化学身份证”,从哈希原理到全球监管合规(2025)
算法·哈希算法·inchikey·rdkit·分子表达·化学信息学
橙汁味的风16 小时前
2EM算法详解
人工智能·算法·机器学习