对称二叉树(简单难度)

简介: 对称二叉树(简单难度)

题目概述(简单难度)

给定一个二叉树,检查它是否是镜像对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

    1
   / \
  2   2
 / \ / \
3  4 4  3

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

   1
   / \
  2   2
   \   \
   3    3

题目链接

点我进入leetcode

思路与代码

思路展现

这道题目的思路也是非常简单的:

对称二叉树前两层的比较都是一样的,当到了第三层的时候,比较的是左子树的左节点和右子树的右节点是否相同,如下图所示:

2.png

代码示例

class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if(p == null && q != null || p !=null && q == null) {
            return false;
        }
        if(p == null && q == null) {
            return true;
        }
        if(p.val != q.val) {
            return false;
        }
        //return这里发生变化
        return isSameTree(p.left,q.right) && isSameTree(p.right,q.left);
    }
    public boolean isSymmetric(TreeNode root) {
       if(root == null) {
           return true;
       }
       if(isSameTree(root.left,root.right)) {
           return true;
       }
       return false;
    }
}

总结

考察对于二叉树的掌握,也是入门的经典题目

时间复杂度:O(n),这里属于同步遍历左右两棵互为镜像的子树,所以时间复杂度为O(n)

空间复杂度:这里的空间复杂度和递归使用的栈空间有关,而栈空间与二叉树的深度有关,这里两棵互为镜像的左右子树的深度都是相等的,假设都为n,所以这里递归层数不超过 n,故渐进空间复杂度为 O(n).


相关文章
|
机器学习/深度学习 存储 人工智能
【每日挠头算法题(7)】对称的二叉树|二叉树的所有路径
【每日挠头算法题(7)】对称的二叉树|二叉树的所有路径
|
7月前
|
算法 前端开发
前端算法-对称二叉树
前端算法-对称二叉树
|
7月前
|
算法 程序员
【算法训练-二叉树 四】【对称与翻转】对称二叉树、翻转二叉树
【算法训练-二叉树 四】【对称与翻转】对称二叉树、翻转二叉树
56 0
剑指offer 27. 对称的二叉树
剑指offer 27. 对称的二叉树
74 0
|
算法
【算法】二叉树相关算法
【算法】二叉树相关算法
53 0
|
算法 Java
算法打卡Day19_leetcode _101. 对称二叉树
算法打卡Day19_leetcode _101. 对称二叉树
算法打卡Day19_leetcode _101. 对称二叉树
对称的二叉树(剑指offer 28)
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
对称的二叉树(剑指offer 28)
|
算法 前端开发 程序员
对称的二叉树
对称的二叉树
对称的二叉树
|
算法
【刷算法】对称的二叉树
【刷算法】对称的二叉树
【刷算法】对称的二叉树