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

LeetCode:对称二叉树

1、题目描述

给你一个二叉树的根节点 root , 检查它是否轴对称。

示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

输入:root = [1,2,2,null,3,null,3]
输出:false

提示:

  • 树中节点数目在范围 [1, 1000] 内

  • -100 <= Node.val <= 100

进阶:你可以运用递归和迭代两种方法解决这个问题吗?

2、方法1:递归法

解题思路

递归法通过比较左右子树的对称性来判断整棵树是否对称。

步骤:

  1. 终止条件

    • 左右节点均为 null,返回 true

    • 左右节点有一个为 null,返回 false

    • 左右节点值不相等,返回 false

  2. 递归比较

    • 比较左子树的左节点与右子树的右节点。

    • 比较左子树的右节点与右子树的左节点。

  3. 返回结果:上述两个比较结果必须同时为 true

时间复杂度:O(n),空间复杂度:O(n) (调用栈)

public boolean isSymmetric(TreeNode root) {if (root == null) return true;return isMirror(root.left, root.right);
}private boolean isMirror(TreeNode l, TreeNode r) {if (l == null && r == null) return true;  // 均为空if (l == null || r == null) return false; // 一个为空if (l.val != r.val) return false;         // 值不相等return isMirror(l.left, r.right) && isMirror(l.right, r.left); // 递归比较
}

3、方法2:迭代法

解题思路

迭代法通过队列按层比较左右子树的对称性。

步骤:

  1. 初始化:将根节点的左右子节点入队。

  2. 循环处理队列

    • 每次取出两个节点(左子树的节点和右子树的节点)。

    • 检查是否均为 null,是则跳过。

    • 检查是否一个为 null 或值不相等,是则返回 false

    • 将左子树的左节点与右子树的右节点入队(比较外侧)。

    • 将左子树的右节点与右子树的左节点入队(比较内侧)。

  3. 返回结果:队列为空时未发现不对称,返回 true

时间复杂度:O(n),空间复杂度:O(n) (栈空间)

public boolean isSymmetric(TreeNode root) {Queue<TreeNode> queue = new LinkedList<>();queue.offer(root.left);queue.offer(root.right);while (!queue.isEmpty()) {TreeNode u = queue.poll();TreeNode v = queue.poll();if (u == null && v == null) continue;       // 均为空if (u == null || v == null) return false;   // 一个为空if (u.val != v.val) return false;           // 值不相等queue.offer(u.left);  // 左子树的左节点queue.offer(v.right); // 右子树的右节点queue.offer(u.right); // 左子树的右节点queue.offer(v.left);  // 右子树的左节点}return true;
}

相关文章:

  • 编程日志4.27
  • RPA与After Effects 2024深度融合:自动化影视特效全链路革命
  • Unity垃圾回收(GC)
  • Spring Boot 中 AOP 的自动装配原理
  • 如何使用极狐GitLab 软件包仓库功能托管 npm?
  • 战术级微波干扰系统:成都鼎轻量化装备如何实现全频段智能压制?
  • http Status 400 - Bbad request 网站网页经常报 HTTP 400 错误,清缓存后就好了的原因
  • Java程序题案例分析
  • Nvidia-smi 运行失败(Failed to initialize NVML: Driver/library version mismatch)
  • 2025FIC初赛(手机)
  • 【实战教程】零基础搭建DeepSeek大模型聊天系统 - Spring Boot+React完整开发指南
  • 阿里云平台与STM32的物联网设计
  • 大模型Prompt工程2.0:多Prompt协同完全指南——从原理到实战,高效解锁AI深层潜力
  • 什么是回调 钩子 Hook机制 钩子函数 异步编程
  • shell脚本实现远程重启多个服务器
  • 代码随想录算法训练营第三十四天
  • 数据库补充知识
  • 【Redis】哨兵机制和集群
  • k8s 中 deployment 管理的多个 pod 构成集群吗
  • 技术视界|青龙机器人训练地形详解(二):添加地形到训练环境
  • 总粉丝破亿!当网络大V遇见硬核科技,互联网时代如何书写上海故事?
  • 习近平出席俄罗斯纪念苏联伟大卫国战争胜利80周年庆典
  • 上海杨浦:优秀“博主”购房最高可获200万补贴
  • 欧洲史上最严重停电事故敲响警钟:能源转型如何保证电网稳定?
  • 71岁导演詹姆斯・弗雷病逝,曾执导《纸牌屋》、麦当娜MV
  • 援藏博士张兴堂已任西藏农牧学院党委书记、副校长