手撕算法-对称二叉树

力扣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);
    }
}

面试公司

  • 字节跳动
相关推荐
不知名的老吴6 分钟前
案例教学:最长递增子序列问题
数据结构·算法·动态规划
样例过了就是过了6 分钟前
LeetCode热题100 杨辉三角
c++·算法·leetcode·动态规划
念越14 分钟前
算法每日一题 Day05|双指针解决盛最多水的容器问题
算法·力扣
eggrall16 分钟前
Leetcode 最大连续 1 的个数 III(medium)
算法·leetcode·职场和发展
啊我不会诶16 分钟前
Educational Codeforces Round 120 (Rated for Div. 2) vp补题
c++·算法
贾斯汀玛尔斯19 分钟前
每天学一个算法--图算法(Graph Algorithms)
数据结构·算法
埃伊蟹黄面20 分钟前
C++ —— 智能指针
开发语言·c++·算法
董董灿是个攻城狮22 分钟前
马斯克在用炸火箭的方式训练 AGI。。。
算法
Pentane.25 分钟前
【力扣hot100】【Leetcode 54】螺旋矩阵|边界控制 算法笔记及打卡(19/100)
算法·leetcode·矩阵
黎阳之光25 分钟前
黎阳之光:港口智能体集群,重塑智慧港口新范式
大数据·人工智能·算法·安全·数字孪生