剑指offer系列之五十六:对称二叉树的判断

简介:

题目描述

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

前面有一题是打印输出某二叉树的镜像,回想其实现的思路是:采用层序遍历的思路对每一个遍历的节点,如果其有孩子节点,那么就交换两者。直到遍历的节点没有孩子节点为止,然而此题是对二叉树木镜像的判断,明显是更简单的,只需要进行两个判断:对节点的左孩子与其兄弟节点右孩子的判断以及对节点右孩子与其兄弟节点左孩子的判断。这样就完成对对一棵二叉树是否对称的判断。下面是具体的实现代码(已被牛客AC):

public class Solution {
    boolean isSymmetrical(TreeNode pRoot) {
        if (pRoot == null) return true;
        return isSymmetricalCore(pRoot.left, pRoot.right);
    }

    private boolean isSymmetricalCore(TreeNode left, TreeNode right) {
        if (left == null && right == null) return true;
        if (left == null || right == null) return false;
        if (left.val == right.val)
            return isSymmetricalCore(left.right, right.left)
                    && isSymmetricalCore(left.left, right.right);
        return false;
    }
}
AI 代码解读
目录
打赏
0
0
0
0
85
分享
相关文章
☆打卡算法☆LeetCode 222. 完全二叉树的节点个数 算法解析
☆打卡算法☆LeetCode 222. 完全二叉树的节点个数 算法解析
每日一题:LeetCode-589.N叉树的前序遍历序列构造二叉树
每日一题:LeetCode-589.N叉树的前序遍历序列构造二叉树
剑指Offer - 面试题28:对称的二叉树
剑指Offer - 面试题28:对称的二叉树
88 0
代码随想录训练营day15|102.层序遍历 226.翻转二叉树 101.对称二叉树
代码随想录训练营day15|102.层序遍历 226.翻转二叉树 101.对称二叉树
代码随想录训练营day21| 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先...
代码随想录训练营day21| 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先...
剑指offer 27. 对称的二叉树
剑指offer 27. 对称的二叉树
101 0
【创作赢红包】< 二叉树OJ题(一) >单值二叉树&&二叉树的最大深度&&翻转二叉树&&相同的树&&对称二叉树
【创作赢红包】< 二叉树OJ题(一) >单值二叉树&&二叉树的最大深度&&翻转二叉树&&相同的树&&对称二叉树
对称的二叉树(剑指offer 28)
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
100 0
对称的二叉树(剑指offer 28)
重温算法之二叉树的锯齿形层序遍历
关于二叉树的题目其实是我的弱项,虽然二叉树不是很难理解,但是从学校开始接触二叉树开始就对它不是很感冒,所以很多时候都避开它,但是再难咬的骨头也的得啃,二叉树运用在很多程序的底层实现里,比如MySQL的索引实现就是B+树,我们懂得使用索引的同时也得知道,索引为什么这么快,而其快的原因就是底层里B+树得实现。
125 0
重温算法之二叉树的锯齿形层序遍历
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等