当前位置: 首页 > news >正文

101. 对称二叉树

        前置题目100. 相同的树 - 力扣(LeetCode)

        

        与100题不同,对称二叉树要求镜像对称,因此需要比较左子树的左子树与右子树的右子树是否相等,以及左子树的右子树与右子树的左子树是否相等。虽然比较的对象不同,但本质上都是在判断节点的值是否相同。

        本题适合采用递归方法解决,因为可以将问题分解为相同的子问题,且子问题与原问题的处理逻辑完全一致。例如,

                       

        对于这棵二叉树,由于根节点本身已经对称,问题就转化为判断其左右子树是否相同,即节点 2 和节点 2 的对称性。接下来,我们需要对这两个节点的子树进行相同的对称性判断。

        在递归过程中,终止条件为:当左右子树中任意一个节点为空时,需要判断另一个节点是否也为空。如果其中一个为空而另一个不为空,则两子树必然不对称。在此基础上,我们继续递归地比较节点的值以及它们的左右子树。

        代码:

class Solution {
public:bool isSameTree(TreeNode* p, TreeNode* q) {if(p == nullptr || q == nullptr) {return p == q;}return p->val == q->val && isSameTree(p->left,q->right) && isSameTree(p->right,q->left);}bool isSymmetric(TreeNode* root) {return isSameTree(root->left,root->right);}
};

         时间复杂度:O(n),n为树的节点数量,所有节点最多遍历一次

        空间复杂度:O(n),最坏的情况下,树是一条链,需要O(n)的递归栈空间

相关文章:

  • MGX:多智能体管理开发流程
  • 时钟产生的公共模块示例
  • C++动态内存分配
  • 【AI面试秘籍】| 第11期:大模型“复读机“难题的破局之道
  • Vue百日学习计划Day9-15天详细计划-Gemini版
  • STM32 ADC+DMA+TIM触发采样实战:避坑指南与源码解析
  • 如何有效的开展接口自动化测试?
  • 面试题:详细分析Arraylist 与 LinkedList 的异同
  • 【Spring AI】本地大模型接入MCP实现联网搜索
  • 综合项目:博客
  • Python之三大基本库——Matplotlib
  • 对称二叉树的判定:双端队列的精妙应用
  • 源码:处理文件格式和字符集的相关代码(3-3)
  • Spring WebFlux与Quarkus实战:云原生微服务开发的两大主流框架深度解析
  • 一分钟了解机器学习
  • Linux系统启动相关:vmlinux、vmlinuz、zImage,和initrd 、 initramfs,以及SystemV 和 SystemD
  • 割点与其例题
  • 消防应急处置管理的全流程概述
  • NLP双雄争霸:GPT与BERT的生成-理解博弈——从技术分野到产业融合的深度解码
  • C++:单例模式
  • 女排奥运冠军宋妮娜:青少年保持身心健康才能走得更远
  • 广西壮族自治区党委副书记、自治区政府主席蓝天立接受审查调查
  • 德州国资欲退出三东筑工,后者大股东系当地房企东海集团
  • 昆明公布3起经济犯罪案例:一人持有820余万假美元被判刑十年
  • 刘强东坐镇京东一线:管理层培训1800人次,最注重用户体验
  • 中国结算澄清“严查场外配资”传闻:账户核查为多年惯例,无特殊安排