leetcode算法101.对称二叉树

简介: 当给你一个二叉树的根节点 root 时,如何 检查它是否轴对称?本文带大家解决这个问题。

一、leetcode算法



1、对称二叉树


1.1、题目


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


示例 1:


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

输出:true

示例 2:


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

输出:false


1.2、思路


思路一:此题我们可以使用递归的方式来解决问题,首先遵循以下几个条件。

1.它们的两个根结点具有相同的值


2.每个树的右子数都与另一个树的左子树镜像对称


1.3、答案


23.png


class Solution {
    public boolean isSymmetric(TreeNode root) {
        return check(root, root);
    }
    public boolean check(TreeNode p, TreeNode q){
        //如果左右子树都为空,证明对称
        if(p == null && q == null){
            return true;
        }
        //如果左右子树有一个为空,另一个不为空,则不对称
        if(p == null || q == null){
            return false;
        }
        //如果左右节点的值不相同,则不对称
        if(p.val != q.val){
            return false;
        }
        //如果上述条件未击中,则递归判断左子树的左节点和右子数的右节点,以及左子树的右节点和右子数的左节点;
        return check(p.left, q.right) && check(p.right,q.left);
    }
}


复杂度分析


假设树上一共 n 个节点。


时间复杂度:这里遍历了这棵树,渐进时间复杂度为 O(n)。


空间复杂度:这里的空间复杂度和递归使用的栈空间有关,这里递归层数不超过 n,故渐进空间复杂度为 O(n)。



相关文章
|
2月前
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
49 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
2月前
|
存储 算法
二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
文章深入探讨了二叉树的层序遍历方法,并展示了如何通过队列实现层序遍历的算法逻辑,同时指出掌握层序遍历技巧可以帮助解决LeetCode上的多道相关题目。
二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
|
2月前
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
131 1
|
2月前
|
算法 Java
LeetCode第94题二叉树的中序遍历
文章介绍了LeetCode第94题"二叉树的中序遍历"的解法,使用递归实现了中序遍历的过程,遵循了"左根右"的遍历顺序,并提供了清晰的Java代码实现。
LeetCode第94题二叉树的中序遍历
|
2月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
39 6
|
2月前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
55 2
|
2月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
41 1
|
2月前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
40 1
|
2月前
|
算法
【初阶数据结构篇】二叉树算法题
二叉树是否对称,即左右子树是否对称.
|
2月前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
65 0
下一篇
无影云桌面