刷代码随想录有感(44):对称二叉树

题干:

代码:

class Solution {
public:bool compare(TreeNode* left, TreeNode* right){//传入左右子树if(left == NULL && right != NULL) return false;//子else if(left != NULL && right == NULL) return false;//子else if(left == NULL && right == NULL) return true;//子else if(left -> val != right -> val) return false;//子bool inside = compare(left -> right, right -> left);//父bool outside = compare(left -> left, right -> right);//父bool res = inside && outside;//父return res;}bool isSymmetric(TreeNode* root) {bool res = compare(root -> left, root -> right);return res;}
};

某种意义上是后序遍历。

补充:迭代实现:
 

//实现二叉树是否对称的迭代方法,我们可以使用队列。基本思路是利用队列存储需要比较的节点,每次取出两个节点比较它们的值,然后按照镜像的方式将它们的子节点成对加入队列。以下是一个具体实现的示例:
bool isSymmetric(TreeNode* root) {if (root == NULL) return true;//用于降低时间复杂度// 使用队列来迭代处理queue<TreeNode*> q;// 初始时将根节点的左右子节点加入队列q.push(root->left);q.push(root->right);while (!q.empty()) {TreeNode* leftnode = q.front(); q.pop();TreeNode* rightnode = q.front(); q.pop();// 如果两个节点都为空,则继续下一轮比较,说明此时已经顺利遍历到叶子了if (leftnode == NULL && rightnode == NULL) continue;// 只要遍历过程中出现其中一个节点为空,或者两个节点的值不相等,则不对称,立刻返回falseif (!leftnode || !rightnode || leftnode->val != rightnode->val) return false;// 将要比较的子节点成对加入队列q.push(leftnode->left);//外q.push(rightnode->right);//外q.push(leftnode->right);//内q.push(rightnode->left);//内}return true; // 能顺利完成while说明每一次都能顺利达到left == NULL && right == NULL,返回 true
}

原理其实也就是镜像比较两个节点值是否相同。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS-7安装Mysql并允许其他主机登录

一、通用设置&#xff08;分别在4台虚拟机设置&#xff09; 1、配置主机名 hostnamectl set-hostname --static 主机名2、修改hosts文件 vim /etc/hosts 输入&#xff1a; 192.168.15.129 master 192.168.15.133 node1 192.168.15.134 node2 192.168.15.136 node33、 保持服…

【draw.io的使用心得介绍】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

你的RPCvs佬的RPC

一、课程目标 了解常见系统库的hook了解frida_rpc 二、工具 教程Demo(更新)jadx-guiVS CodejebIDLE 三、课程内容 1.Hook_Libart libart.so: 在 Android 5.0&#xff08;Lollipop&#xff09;及更高版本中&#xff0c;libart.so 是 Android 运行时&#xff08;ART&#x…

LeetCode_链表的回文结构

✨✨所属专栏&#xff1a;LeetCode刷题专栏✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 题目描述&#xff1a; 对于一个链表&#xff0c;请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法&#xff0c;判断其是否为回文结构。给定一个链表的头指针A&#xff0c;请返回一个bo…

谷歌、Meta、OpenAI 联同其他行业巨头共同打击 AI 产生的儿童性虐待图像|TodayAI

谷歌、Meta、OpenAI 等全球科技巨头已联合行动&#xff0c;与其他行业领导者共同宣布&#xff0c;将加强措施&#xff0c;防止人工智能技术被用来制造或传播儿童性虐待图像。 为打击儿童性虐待材料&#xff08;CSAM&#xff1a;child sexual abuse material&#xff09;的传播…

wfs 文件存储系统 v1.0.5

前言&#xff1a;wfs 是高性能海量小文件存储系统 &#xff0c;支持Linux&#xff0c;Windows&#xff0c;Macos&#xff0c;FreeBSD等系统&#xff0c; 可以高效地进行文件存储和读取。wfs 支持文件压缩归档&#xff0c;并提供简洁的数据读取方式和文件后台管理和 以及归档文件…

《设计模式之美》第三章 总结

《设计模式之美》总结 第三章 设计原则 3.1 单一职责原则&#xff1a;如何判定某个类的职责是否单一 3.1.1 单一职责原则的定义和解读 定义&#xff1a;一个类或模块只负责完成一个职责&#xff08;功能&#xff09; 含义&#xff1a;不要设计功能大而全的类或模块&#xff…

汽车纵染压制专用液压机比例阀放大器

汽车纵染压制专用液压机比例阀放大器是一种专门用于汽车纵梁拉伸工艺的设备&#xff0c;它也可以用于其他金属薄板的压制成型及校正工艺。该类型的液压机通常具备独立的动力机构和电气系统&#xff0c;采用PLC技术进行控制&#xff0c;以确保操作的准确性和稳定性。除了纵梁拉伸…

【随想录】Day31—第八章 贪心算法 part01

目录 题目1: 455. 分发饼干1- 思路2- 题解⭐分发饼干 ——题解思路 题目2: 摆动序列1- 思路2- 题解⭐摆动序列 ——题解思路 题目3: 最大子数组和1- 思路2- 题解⭐ 最大子数组和 ——题解思路 题目1: 455. 分发饼干 题目链接&#xff1a;455. 分发饼干 1- 思路 贪心的思路&am…

Linux多进程(二)进程通信方式二 消息队列

消息队列是在两个进程之间传递二进制块数据的一种简单有效的方式。每个数据块都有一个特定的类型&#xff0c;接收方可以根据类型来有选择地接收数据&#xff0c;而不一定像管道和命名管道那样必须以先进先出的方式接收数据。 一、创建消息队列 创建一个消息队列或者获取一个…

Linux多进程(二)进程通信方式一 管道

管道的是进程间通信&#xff08;IPC - InterProcess Communication&#xff09;的一种方式&#xff0c;管道的本质其实就是内核中的一块内存(或者叫内核缓冲区)&#xff0c;这块缓冲区中的数据存储在一个环形队列中&#xff0c;因为管道在内核里边&#xff0c;因此我们不能直接…

Go语言并发赋值的安全性

struct并发赋值 type Test struct {X intY int }func main() {var g Testfor i : 0; i < 1000000; i {var wg sync.WaitGroup// 协程 1wg.Add(1)go func() {defer wg.Done()g Test{1, 2}}()// 协程 2wg.Add(1)go func() {defer wg.Done()g Test{3, 4}}()wg.Wait()// 赋值…

全氟己酮灭火绳的用法早知道:灭火绳多少钱一米?

全氟己酮灭火装置作为一种高效、安全、环保的灭火技术&#xff0c;已经成为了备受青睐的新型灭火选择之一。伴随着市场需求不断增长&#xff0c;在全氟己酮厂家的努力下&#xff0c;各式各样的全氟己酮自动灭火装置不断涌现&#xff0c;包括自动灭火贴、灭火片、灭火毯、灭火绳…

直播报名 | 科技出海新势力,遥感+AI助力一带一路

遥感技术的出海之路顺畅吗&#xff1f; 国内外遥感应用的关注点相同吗&#xff1f; 目前珈和主要辐射哪些海外国家&#xff1f; … 上周数据赋农季第三期《科技出海&#xff0c;遥感AI赋能“一带一路”提升种植园规模效益》直播预告一出&#xff0c;小伙伴们纷纷来咨询珈和的海…

《S32G3系列芯片——Boot详解》持续更新中...

总目录&#xff1a;《S32G3系列芯片——Boot详解》持续更新中... ... 一、前言二、启动时序概述&#xff08;Boot Sequence&#xff09;三、启动特性&#xff08;Boot Features&#xff09;四、启动模式&#xff08;Boot Mode&#xff09;五、《S32G3系列芯片——Boot详解》系列…

Centos之yum安装好玩的命令

1.会动的小火车 我在root下使用的 yum install sl.x86_64sl2.figlet yum install figlet.x86_64figlet 55553.cowsay会说话 yum install cowsay

力扣数据库题库学习(4.23日)

610. 判断三角形 问题链接 解题思路 题目要求&#xff1a;对每三个线段报告它们是否可以形成一个三角形。以 任意顺序 返回结果表。 对于三个线段能否组成三角形的判定&#xff1a;任意两边之和大于第三边&#xff0c;对于这个表内的记录&#xff0c;要求就是&#xff08;x…

一看就会,uni-app打包运行成微信小程序,部署

前言 这篇文章主要针对刚开始接触混合开发的小伙伴&#xff0c;全文使用uniapp框架&#xff0c;使用HBuilderX结合微信小程序开发工具作为开发环境。搭建一个简单的入手项目&#xff0c;主要是对搭建项目的流程做一个简单介绍 提示&#xff1a;以下是本篇文章正文内容&#xff…

【GEE】优雅地实现年度、季度、月度甚至旬度影像合成(附完整代码)

以下文章来源于GEE学习室 &#xff0c;作者GEEStudyRoom 光学影像由于受到天气因素&#xff08;云、雨和雾等&#xff09;影响&#xff0c;导致单张影像数据存在大量坏死像元。此处&#xff0c;坏死像元指由于受到云遮挡等导致下垫面地物覆盖不能准确被卫星信息捕捉从而不能正…

【Linux系统编程】第八弹---权限管理操作(中)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、修改文件权限的做法(二) 2、文件类型 3、可执行权限 4、创建文件/目录的默认权限 4.1、权限掩码 总结 前面一弹我们学…