leetcode算法101.对称二叉树

Posted 学无止境小奇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode算法101.对称二叉树相关的知识,希望对你有一定的参考价值。

👏👏👏

哈喽!大家好,我是【学无止境小奇】,一位热爱分享各种技术的博主!😍😍😍

⭐【学无止境小奇】的创作宗旨:每一条命令都亲自执行过,每一行代码都实际运行过,每一种方法都真实实践过,每一篇文章都良心制作过。✊✊✊

⭐【学无止境小奇】的博客中所有涉及命令、代码的地方,除了提供图片供大家参考,另外会在图片下方提供一份纯文本格式的命令或者代码方便大家粘贴复制直接执行命令或者运行代码。🤝🤝🤝

⭐如果你对技术有着浓厚的兴趣,欢迎关注【学无止境小奇】,欢迎大家和我一起交流。😘😘😘

❤️❤️❤️感谢各位朋友接下来的阅读❤️❤️❤️

文章目录

一、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、答案

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)。

以上是关于leetcode算法101.对称二叉树的主要内容,如果未能解决你的问题,请参考以下文章

leetcode101 对称二叉树

图解 | LeetCode #101 对称二叉树

LeetCode101. Symmetric Tree-对称树/镜像树

⭐算法入门⭐《二叉树》简单03 —— LeetCode 101. 对称二叉树

LeetCode(算法)- 101. 对称二叉树

数据结构与算法二叉树——对称二叉树