给定一棵二叉树,判断它是否是镜像对称的

2023-05-16

给定一个二叉树,检查它是否是镜像对称的。

在这里先解释一下镜像对称的概念,顾名思义,就像人站在镜子前面面对自己一样,看到的一切都是对称的。镜中的反射与现实中的人具有相同的头部,但反射的右臂对应于人的左臂,反之亦然。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

在这里插入图片描述

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

在这里插入图片描述

解答

方法一:(递归)

我们可以这么想,如果一棵树的左子树和右子树镜像对称的话,那么这棵树一定是镜像对称的,例如下面这棵树:

在这里插入图片描述

那么这样一来,我们可以把问题转化为两棵树在什么情况下互为镜像?
如果两棵树满足以下条件则互为镜像:
1.它们的两个根结点具有相同的值。
2.每个树的右子树都与另一个树的左子树镜像对称。
例如下面:

在这里插入图片描述

代码如下:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool isMirror(struct TreeNode *t1,struct 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));
}
bool isSymmetric(struct TreeNode *root) {
    return isMirror(root,root);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

给定一棵二叉树,判断它是否是镜像对称的 的相关文章

随机推荐

  • openssl:Can‘t load /home/test/.rnd into RNG

    Can 39 t load home test rnd into RNG 140409534742976 error 2406F079 random number generator RAND load file Cannot open f
  • 线程同步的方式有哪些(简单易懂)

    什么是线程同步 线程同步 xff1a 这里的同步并非同时运行的意思 xff0c 而是指多线程通过特定的设置来控制线程之间的执行顺序 xff0c 如果没有同步 xff0c 那线程之间是各自运行各自的 xff01 特殊的线程同步 线程互斥可以看
  • Blazo身份认证授权示例以及如何对接统一登录平台

    Blazo的身份认证授权示例以及如何对接统一登录平台 在阅读本文之前 xff0c 希望您已经对ASP NET Core或者Web应用的身份认证机制有所了解 本文主要讲述Blazor WebAssembly模式下的身份认证和授权方法 xff0
  • Blazor页面元素授权——AuthorizeView 组件的使用

    Blazor页面元素授权 AuthorizeView 组件的使用 上篇博客我们说到了blazor的身份认证的实现 xff0c 对于AuthorizeView 组件来说 xff0c 可以通过级联参数来获取包含了用户信息的Authenticat
  • 面试经历---广州YY(欢聚时代)

    上周去YY xff08 欢聚时代 xff09 面试JAVA工程师 xff0c 现在回忆一下当时的面试过程 xff0c 面试问的问题有 xff1a 1 常用的集合类 HashMap HashTable ArrayList LinkedList
  • Linux Kernel ccflags/Android 12 GKI

    ccflags Makefile笔记 外部模块头文件的检索 当编译的目标模块依赖多个头文件时 xff0c kbuild对头文件的搜索位置有这样的规定 xff1a 1 直接放置在 Makefile 同在的目录下 xff0c 在编译时当前目录会
  • Java之反射

    目录 1 什么是反射机制 2 反射机制有什么用 3 Class类对象的三种实例化模式 1 getClass 方法 xff1a 2 类 class 3 使用Class类提供的方法 4 通过反射实例化对象 5 反射主要使用的种类 5 1Clas
  • Win10服务器配置环境变量 | import _ssl # if we can‘t import it, let the error propagate ImportError: DLL load

    起因是我拿到了学校的算力平台的账号 xff0c 登录后发现桌面上只有软件和文件夹 xff0c C盘文件根本就看不见 xff0c cmd也无法打开 xff0c 但是我又需要搭建自己的环境 我还使用Anaconda安装了python3 7 xf
  • arch linux安装

    arch linux安装 IOS制作开始安装联网分区开始安装 系统初始化grub添加window10引导安装后的配置更改国内源 问题总结体眠后不能唤醒的问题 总结 IOS制作 开始安装 联网 可以先通过ip link命令查看网卡状态 spa
  • mysql无法启动10061的错误!!!

    昨天晚上打开java项目准备联系几个功能 linux里面启动成功 tomcat也运行了 正在享受这个过程的时候 结果mysql显示cant connect localhost 10061的错误 瞬间一盆冷水搞得心情无比低落 之前遇见过一次这
  • Ubuntu 下忘记用户名和登录密码的解决方法(已经实践过,踩过坑)

    1 首先重启 长按 shift 键 xff08 多次连击esc也可以 xff09 上下箭头选择Advanced options for Ubuntu xff0c enter键进入 2 选择后缀带 xff08 recovery mode xf
  • Unity+Android GET和POST方式的简单实现API请求(人像动漫化)

    Unity与Android的简单交互 xff0c Unity打开Android相册并调用 前端时间本想着去弄个小工具 xff0c 就是图文生成视频 xff0c 可是这个的API接口的调用的测试权限死活申请不下来 xff0c 只能放弃 xff
  • 手写生产者/消费者模式(三种方式)

    1 生产者 消费者模式介绍 这种模式满足三点要求 xff1a xff08 1 xff09 生产者生产数据到缓冲区中 xff0c 消费者从缓冲区中取数据 xff08 2 xff09 缓冲区满时 xff0c 生产者线程阻塞 xff0c 进入等待
  • jar包完全解读

    本文抄自 xff1a jar包的一些事儿 前言 xff1a 作为java程序员 xff0c 日常工作就是打jar包 xff0c 可是对jar包的了解有多少呢 xff1f 一 什么是jar包 jar包就是 Java Archive File
  • 面试经历---YY欢聚时代(2015年11月21日上午初试、25日下午复试)

    YY欢聚时代一年多前去面试过一次 xff0c 当时鄙视了 xff0c 在现在的公司呆了1年半了 xff0c 感觉做得很不爽 xff0c 而且薪资又不满意 xff0c 所以想找个新工作 xff0c 就想去YY面试 下面将两次YY面试的经历写出
  • jenkins下载安装及环境搭建

    文章目录 jenkins下载首次启动jenkins环境配置 jenkins下载 jenkins官网下载 xff0c 输入jenkins io xff0c 出现如下界面 xff1a 点击下载 xff0c 往下滑 xff1a 选择这个war包下
  • Testng学习笔记(一)

    目录 TestNg简介1 TestNG使用流程1 1TestNG安装及使用1 2创建maven项目 xff0c 进行POM配置1 3 创建Test类1 4添加测试方法 2 TestNG常用注解及生命周期2 1常用注解2 2TestNG注解的
  • (史上最详细的解释看过来)深入理解函数栈帧

    函数的调用过程 xff08 栈帧 xff09 话说 xff0c 什么是函数栈帧 xff1f 我之前也是一脸懵逼的 xff08 xff09 xff0c 举个栗子 xff0c 先看一段简单的代码 xff1a span class token m
  • main函数参数及可变参数列表解析

    main函数的参数解析 平时写main函数大多都是int main xff0c 然后误以为main函数是没有参数的 xff0c 但在有些书上又看到main括号里有三个不怎么看的懂的参数 xff0c 其实仔细研究就会发现 xff0c main
  • 给定一棵二叉树,判断它是否是镜像对称的

    给定一个二叉树 xff0c 检查它是否是镜像对称的 在这里先解释一下镜像对称的概念 xff0c 顾名思义 xff0c 就像人站在镜子前面面对自己一样 xff0c 看到的一切都是对称的 镜中的反射与现实中的人具有相同的头部 xff0c 但反射