手撕算法-对称二叉树

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

面试公司

  • 字节跳动
相关推荐
ada7_11 小时前
LeetCode(python)230.二叉搜索树中第k小的元素
python·算法·leetcode·链表
TL滕11 小时前
从0开始学算法——第十五天(滑动窗口练习)
笔记·学习·算法
DuHz11 小时前
milliLoc 论文精读:把商用毫米波 FMCW 的绝对测距从“厘米栅格”推进到“毫米级连续值”,并顺带修正 AoA 的系统相位偏差
论文阅读·物联网·算法·信息与通信·毫米波雷达
qq_4017004111 小时前
Linux文件锁解决多进程并发
linux·服务器·算法
长安er12 小时前
LeetCode 83/237/82 链表删除问题-盒子模型
数据结构·算法·leetcode·链表·力扣
小虎牙00712 小时前
RSA 的核心原理
算法
重生之后端学习12 小时前
56. 合并区间
java·数据结构·后端·算法·leetcode·职场和发展
历程里程碑12 小时前
C++ 5:模板初阶
c语言·开发语言·数据结构·c++·算法
leoufung13 小时前
LeetCode 74. Search a 2D Matrix
数据结构·算法·leetcode
Kiri霧13 小时前
Go数据类型介绍
java·算法·golang