165.二叉树:对称二叉树(力扣)

代码解决

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    bool compare(TreeNode* left, TreeNode* right)
    {
        // 两个子节点都为空,说明是对称的
        if (left == nullptr && right == nullptr) return true;
        // 只有一个子节点为空,说明不对称
        if (left == nullptr || right == nullptr) return false;
        // 两个子节点的值不相等,说明不对称
        if (left->val != right->val) return false;

        // 递归比较外侧和内侧节点
        bool outside = compare(left->left, right->right);
        bool inside = compare(left->right, right->left);

        // 只有外侧和内侧都对称,整个树才对称
        return outside && inside;
    }

    bool isSymmetric(TreeNode* root) 
    {
        // 空树是对称的
        if (root == nullptr) return true;
        // 检查左右子树是否对称
        return compare(root->left, root->right);
    }
};
  1. 定义一个比较函数 compare,它接受两个 TreeNode* 类型的参数,代表要比较的两个子节点。
  2. 在 compare 函数中,首先检查两个子节点是否都为空,如果是,则返回 true
  3. 如果只有一个子节点为空,则返回 false
  4. 如果两个子节点的值不相等,则返回 false
  5. 递归地调用 compare 函数来比较外侧节点(左子节点的左子节点和右子节点的右子节点)和内侧节点(左子节点的右子节点和右子节点的左子节点)。
  6. 如果外侧和内侧节点都对称,则返回 true,否则返回 false
  7. 在 isSymmetric 函数中,首先检查根节点是否为空,如果是,则返回 true
  8. 调用 compare 函数来比较根节点的左子树和右子树是否对称。

这个算法的时间复杂度是 O(n),因为每个节点都会被访问一次,其中 n 是树中节点的数量。空间复杂度也是 O(n),因为需要存储递归调用的栈。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

精酿啤酒:品质与口感在啤酒创新与研发中的重要性

在啤酒行业中,创新与研发是推动品牌持续发展的重要动力。而品质与口感作为啤酒的核心要素,在啤酒创新与研发中具有不可忽视的重要性。对于Fendi club啤酒而言,其卓着的品质和与众不同的口感在创新与研发中发挥了关键作用。 品质是啤酒创新与研…

【mysql】ssl_choose_client_version:unsupported protocol

起因:项目上的DolphinScheduler连接不上数据库,查看worker日志提到SSL协议问题: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failureCaused by: java.io.EOFException: SSL peer shut down incorrectly 我…

4. MySQL 约束

文章目录 【 1. 主键约束 PRIMARY KEY 】1.1 在创建表时设置主键约束设置单字段主键在创建表时设置联合主键 1.2 在修改表时添加主键约束1.3 删除主键约束1.4 主键自增长 AUTO_INCREMENT指定自增字段初始值自增字段不连续 【 2. 外键约束 FOREIGN KEY 】2.1 在创建表时设置外键…

使用大模型解析用户问题

前文 我在问答业务中遇到了这样的问题,用户的提问方式是千变万化的,有一种可能就是用户会为了节省时间,同时在一句话里面包含了多个问题,如用户输入“查询上城区管龄大于10年,管材是PE管的管线信息,再帮我…

kafka-集群-生产消费测试

文章目录 1、集群生产消费测试1.1、消费者消费消息1.2、生产者生产消息 1、集群生产消费测试 1.1、消费者消费消息 [rootlocalhost ~]# kafka-console-consumer.sh --bootstrap-server 192.168.74.148:9095,192.168.74.148:9096,192.168.74.148:9097 --topic my_topic11.2、生…

windows开机进入grub引导

电脑上只装了一个windows7,突然有一天有人为了排查一个问题,激活了windows,关机重启以后就进入grub的引导启动了 用启动盘尝试过修复引导,使用启动盘里的分区工具重置启动引导,easyBCD都试过了,都只生效一次…

Java项目:98 springboot在线教育系统

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本系统共有管理员、用户等角色 本在线教育系统管理员功能有个人中心,用户管理,讲师管理,普通管理员管理&#xff…

HR招聘面试人才测评,如何做行政服务类岗位测评?

行政服务类岗位是企业中非常重要的一类职位,主要职责是协助企业领导完成行政管理工作,如会议组织、文件归档、人员档案管理等。为了确保企业行政管理工作的高效运行,需要对行政服务类岗位的综合素质进行测评。具体方法如下: 1. …

Python:b站多个视频爬取下载

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️如遇文章付费,可先看…

邀请新人有奖励的APP推荐:三款新用户注册有奖励的软件

邀请新人有奖励的APP推荐:三款新用户注册有奖励的软件 在这个数字化时代,许多应用程序为了扩大用户基础和增加活跃度,推出了邀请新人有奖励的机制。对于喜欢尝试新应用的用户来说,这不仅是一个获得额外奖励的好机会,也…

飞利浦桌面隐藏文件夹怎么恢复?一文教你搞定

在日常使用飞利浦电脑时,我们有时可能会因为误操作或其他原因而将某些文件夹隐藏起来。这些隐藏文件夹可能包含重要的文件,一旦无法找到,会给我们的工作和生活带来不便。因此,了解如何恢复飞利浦桌面上的隐藏文件夹显得尤为重要。…

【UML用户指南】-02-UML基本元素的介绍(二)

目录 1、语法和语义规则 2、UML中的公共机制 (1)规约 (2)修饰 (3)通用划分 (4)扩展机制 衍型/版型/类型(stereotype) 标记值 (tagged val…

解决Chat打开时Unable to load conversation 的问题

在开梯子的情况下打开chat依然很卡,这里选择edge的浏览器无痕模式(新建InPrivate窗口),在无痕窗口下打开chat就可以了。

华为RH2288H V3服务器iBMC的SSL证书续期

本文对华为RH2288H V3服务器iBMC的SSL证书续期,以避名登录告警提示及主机状态异常。 一、检查现网服务器iBMC的SSL证书到期时间 登录iBMC,点击配置--SSL证书,如下: 可以看到本服务器SSL证书将于今年7月22日到期。 二、联系厂家…

高级无人机系统开发:基于STM32

目录 引言环境准备无人机控制系统基础代码示例:实现无人机控制系统 4.1 姿态传感器数据读取4.2 电机控制4.3 GPS数据处理4.4 用户界面与显示应用场景:无人机导航与稳定控制问题解决方案与优化收尾与总结 1. 引言 本教程将详细介绍如何在STM32嵌入式系…

离屏粒子优化

一、GPU Gems3 Chapter 23:高速的离屏粒子 原文:Chapter 23. High-Speed, Off-Screen Particles 粒子特效一直是一个游戏开发中非常吃性能的点,特点就在于①数量不固定,在极端情况下同时存在的特效数量特别多,不且好合…

第二证券炒股知识:短线炒股技巧?

在股票商场上,出资者分为长线和短线这两大类,其中短线炒股存在以下技巧: 1、早盘集合竞价时刻上的技巧 早上集合竞价对短线出资者来说比较重要,其中早上集合竞价期间9:15-9:20之间出资者可以进行撤单操作&#xff0c…

Qt开发技术:Q3D图表开发笔记(四):Q3DSurface三维曲面图颜色样式详解、Demo以及代码详解

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/139424086 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 红胖子网络科技博…

中学生学人工智能系列:如何用AI学生物

经常有读者朋友给公众号《人工智能怎么学》留言咨询如何使用人工智能学习语文、数学、英语、化学等科目。这些都是中学教师、中学生朋友及其家长们普遍关注的问题。仅仅使用留言回复的方式,不可能对这些问题做出具体和透彻的解答,因此本公众号近期将推出…

【Python】 探索Python中的2D数组峰值检测

基本原理 在Python编程中,经常会遇到需要处理多维数组的场景。2D数组,也就是二维数组,是数组的一种形式,它由多个一维数组组成,可以想象成一个矩阵。峰值检测是数据分析中的一项常见任务,特别是在信号处理…