屠焘 发表于 2025-8-6 18:31:21

给定二叉树的根节点 root,判断它是否 轴对称(镜像对称)

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


这个题的思路是,把「轴对称」转化为「两棵子树互为镜像」的问题:

[*]递归比较:左子树的左孩子 vs 右子树的右孩子,左子树的右孩子 vs 右子树的左孩子。
[*]迭代法:可用队列/栈每次成对弹出节点比较。
复杂度:
时间复杂度:O(n),每个节点访问一次
空间复杂度:

[*]递归:O(h)(栈深度)
[*]迭代:O(n)(队列最大宽度)
1、递归比较
class Solution {
    public boolean isSymmetric(TreeNode root) {
      if(root==null){
            return true;
      }
      if(root.left==null && root.right==null){
            return true;
      }

      if(root.left==null || root.right==null){
            return false;
      }
   
      // 判断左右子树是否镜像对称
      return isMirror(root.left, root.right);
      
    }

    private boolean isMirror(TreeNode t1, TreeNode t2){
      if(t1==null && t2==null){
            return true;
      }

      if(t1==null || t2==null){
            return false;
      }
      // 递归比较:
      // 1.左子树 vs 右子树
      // 2.左子树的左孩子 vs 右子树的右孩子
      // 3.左子树的右孩子 vs 右子树的左孩子
      if(t1.val == t2.val && isMirror(t1.left, t2.right) && isMirror(t1.right, t2.left)){
            return true;
      }else{
            return false;
      }
    }
}2、迭代法(队列双指针)
class Solution {
    public boolean isSymmetric(TreeNode root) {
      if (root == null) return true;
      Queue<TreeNode> q = new LinkedList<>();
      q.offer(root.left);
      q.offer(root.right);

      while (!q.isEmpty()) {
            TreeNode t1 = q.poll();
            TreeNode t2 = q.poll();
            if (t1 == null && t2 == null) continue;
            if (t1 == null || t2 == null || t1.val != t2.val) return false;
            q.offer(t1.left);q.offer(t2.right);
            q.offer(t1.right); q.offer(t2.left);
      }
      return true;
    }
}
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

巩芷琪 发表于 2025-12-3 02:51:18

不错,里面软件多更新就更好了

骆贵 发表于 2025-12-14 09:52:44

喜欢鼓捣这些软件,现在用得少,谢谢分享!

空娅芬 发表于 2025-12-14 17:00:56

感谢发布原创作品,程序园因你更精彩

育局糊 发表于 2025-12-27 23:30:44

东西不错很实用谢谢分享

计海龄 发表于 2026-1-7 20:05:19

前排留名,哈哈哈

事确 发表于 2026-1-10 23:38:24

感谢,下载保存了

觐有 发表于 2026-1-17 20:16:49

谢谢楼主提供!

镝赋洧 发表于 2026-1-18 01:04:30

懂技术并乐意极积无私分享的人越来越少。珍惜

慢秤 发表于 2026-1-18 06:27:56

这个好,看起来很实用

抽厉 发表于 2026-1-18 13:45:13

谢谢楼主提供!

当贵 发表于 2026-1-21 10:11:46

这个有用。

烯八 发表于 2026-1-21 18:26:32

不错,里面软件多更新就更好了

卢莹洁 发表于 2026-1-24 09:57:25

感谢分享,学习下。

饨篦 发表于 2026-1-24 11:26:59

过来提前占个楼

彭水晶 发表于 2026-1-27 07:02:08

懂技术并乐意极积无私分享的人越来越少。珍惜

表弊捞 发表于 2026-1-29 08:44:22

东西不错很实用谢谢分享

粹脍誊 发表于 2026-2-2 05:07:25

谢谢分享,辛苦了

缀访 发表于 2026-2-4 19:05:23

分享、互助 让互联网精神温暖你我

赐度虻 发表于 2026-2-5 11:14:21

这个有用。
页: [1] 2
查看完整版本: 给定二叉树的根节点 root,判断它是否 轴对称(镜像对称)