手撕算法-对称二叉树

力扣101. 对称二叉树

链接

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

题目描述

给你一个二叉树的根节点 root , 检查它是否轴对称。
示例1:
image.png
此树是对称的。
示例2:
image.png
此树也是对称的
示例3:
image.png
此树不对称

思路

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

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

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

代码

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

image.png

面试公司

  • 字节跳动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【WEEK3】学习目标及总结【SpringMVC】【中文版】

学习目标: 三周完成SpringMVC入门——第三周 感觉这周很难完成任务了,大概率还会有第四周 学习内容: 参考视频教程【狂神说Java】SpringMVC最新教程IDEA版通俗易懂数据处理JSON交互处理 学习时间及产出: 第三周 MON~FRI 2024.…

15 stack和queue的实现

栈和队列作为容器适配器,只需要将容器封装模板,传入什么容器用什么容器就好了 栈 #pragma oncetemplate <class T, class container vector<T>> class stack { public:void push(const T& x){_con.push_back(x);}void pop(){_con.pop_back();}T& top(){…

代码缺陷代价

目录 什么是语法缺陷什么是类型安全缺陷什么是内存和资源安全缺陷什么是并发安全缺陷什么是错误处理缺陷 什么是语法缺陷 语法缺陷是指程序中存在的语法错误或违反语法规则的问题。它通常是由于编程语言的语法规则不符合要求导致的。例如&#xff0c;缺少分号、括号不匹配、关…

peft模型微调--Prompt Tuning

模型微调&#xff08;Model Fine-Tuning&#xff09;是指在预训练模型的基础上&#xff0c;针对特定任务进行进一步的训练以优化模型性能的过程。预训练模型通常是在大规模数据集上通过无监督或自监督学习方法预先训练好的&#xff0c;具有捕捉语言或数据特征的强大能力。 PEF…

ubuntu(20.04)-安装JAVA环境-IDEA

1.下载IDEA 2.解压文件 sudo tar -zxvf idealC-2022.2.3.tar.gz -C /opt 3.添加环境变量&#xff1a; .vim ~/.bashrc export IDEA_HOME/opt/ideaIC-2022.2.3/ export PATH${IDEA_HOME}/bin:$PATH source ~/.bashrc 4.启动&#xff1a; cd /opt/ideaIC-2…

什么是SFP光模块?如何选择?

SFP光模块作为全球制造商和供应商的行业标准&#xff0c;至今仍被广泛使用。在许多网络中&#xff0c;如SONET、千兆以太网、光纤通道、PON和其他通信标准中&#xff0c;SFP光模块已经成为行业的中坚力量。本指南将为您介绍一些关于选择SFP模块的技巧。 什么是SFP光模块&#…

什么是浅拷贝和深拷贝

目录 一、概念 浅拷贝&#xff08;Shallow Copy&#xff09; 深拷贝&#xff08;Deep Copy&#xff09; 二、Java中使用工具来帮助进行对象的拷贝 ⭐三、bean工具类 总结 一、概念 当涉及到对象复制时&#xff0c;浅拷贝和深拷贝是两个重要的概念。它们描述了在复制对象…

Docker部署ChatGLM3、One API、FastGPT

创建并运行chatglm3容器 docker run --name chatglm3 -p 8000:8000 registry.cn-hangzhou.aliyuncs.com/ryyan/chatglm.cpp:chatglm3-q5_1 创建并运行one-api容器 (其中挂载路径 D:\one-api 可以选择你自己喜欢的目录) docker run --name oneapi -d -p 3000:3000 -e TZAsia…

Linux下的多线程编程:原理、工具及应用(2)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;Flower of Life—陽花 0:34━━━━━━️&#x1f49f;──────── 4:46 &#x1f504; ◀️ ⏸ ▶️ ☰ …

第二十四节 Java 异常处理

什么是异常&#xff1f; 程序运行时&#xff0c;发生的不被期望的事件&#xff0c;它阻止了程序按照程序员的预期正常执行&#xff0c;这就是异常。异常发生时&#xff0c;是任程序自生自灭&#xff0c;立刻退出终止&#xff0c;还是输出错误给用户&#xff1f;或者用C语言风格…

中国电子学会(CEIT)2020年12月真题C语言软件编程等级考试三级(含详细解析答案)

中国电子学会&#xff08;CEIT&#xff09;考评中心历届真题&#xff08;含解析答案&#xff09; C语言软件编程等级考试三级 2020年12月 编程题五道 总分:100分一、完美立方&#xff08;20分&#xff09; 形如1、完美立方 形如a^3 b^3 c^3 d^3的等式被称为完美立方等式…

Machine Vision Technology:Lecture3 Edge detection | Fitting

Machine Vision Technology&#xff1a;Lecture3 Edge detection | Fitting Finite difference filters有限差分滤波器Effects of noise噪声对边缘检测影响Derivative theorem of convolution卷积的导数定理Derivative of Gaussian filter高斯滤波器的导数Smoothing vs. deriva…

2、设计模式之单例模式详解(Singleton)

单例模式详解 一、什么是单例模式 单例模式是Java中最简单的设计模式之一。这种类型的设计模式属于创建者模式&#xff0c;它提供了一种访问对象的最佳方式。 这种设计模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被创建。这个…

后端系统开发之——创建SpringBoot工程

原文地址&#xff1a;后端框架系统开发之——创建SpringBoot工程 - Pleasure的博客 下面是正文内容&#xff1a; 前言 现在的市场环境&#xff0c;如果你单单只是作为前端工程师或者是后端工程师&#xff0c;在开发Web应用的时候都需要去读取企业提供的接口文档。而当你前后端…

【ARM】UBL本地服务器离线激活license

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 UBL本地服务器离线激活license。 2、 问题场景 解决有用户外出时激活 license。 3、软硬件环境 1&#xff09;、软件版本&#xff1a;MDK5.39 2&#xff09;、电脑环境&#xff1a;Ubuntu 20.04 LTS 3&…

NCV4275CDT50RKG稳压器芯片中文资料规格书PDF数据手册引脚图图片价格功能

产品概述&#xff1a; NCV4275C 是一款低漏稳压器&#xff0c;可用于严酷汽车环境。它包括了较宽的运行温度范围和输出电压范围。输出调节为 5.0 V 或 3.3 V&#xff0c;额定输出电流为 450 mA。它还提供过电流保护、超温保护和可编程微处理器重置等多种功能。NCV4275C 采用 D…

linux ffmpeg编译

下载源码 https://ffmpeg.org/ csdn下载源码包 不想编译可以直接下载使用静态版本 https://ffmpeg.org/download.html https://johnvansickle.com/ffmpeg/ 根据cpu类型&#xff0c;下载解压后就可以直接使用了。 linux编译 安装底层依赖 yum install gcc yum isntall …

机器学习模型—CatBoost

机器学习模型—CatBoost 作为俄罗斯科技公司Yandex推出的开源机器学习库,CatBoost可以说是当前Gradient Boosting算法发展的新里程碑。相较于广为人知的XGBoost,CatBoost在处理类别特征、纵向样本采样和有序训练数据方面做出了创新性的改进,展现了卓越的性能。 我们经常遇到包…

接口测试和功能测试有什么区别

本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xff1…

vue3项目随笔1

1,Eslint Prettier 报错情况&#xff1a; 解决办法&#xff1a; &#xff08;1&#xff09;下载Prettier - code formatter &#xff08;2&#xff09;配置setting.json文件 文件 -> 首选项 -> 设置 -> 用户 -> Eslint "editor.defaultFormatter":…