前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >两分钟弄懂对称二叉树

两分钟弄懂对称二叉树

作者头像
五分钟学算法
发布2021-07-09 10:06:37
1K0
发布2021-07-09 10:06:37
举报

大家好呀,我是吴师兄,今天照例来更新一道 LeetCode 算法题,根据以往数据来看,这类文章的打开率普遍不高,一般在三四千左右,远远低于水文或者热点文一两万的阅读量,一个合格的自媒体人正确的做法应该是抛弃前者不再更新这类技术文,我也曾经纠结彷徨过,到底是追逐阅读量还是放平心态写好技术文服务好读者

这种心态导致我有时候看到技术文阅读量、点赞量不佳会愤愤不平:MD,再也不写技术文了,可隔了一会看到一道算法题又忍不住想写出来分享。

反正挺难受的,直到前几天我看到了下面这段话。

思来想去,我觉得挺多读者关注我的公众号是想学一些技术的,所以还是保持每周更新一两道算法题解的频率,希望能日拱一卒,帮助读者在算法面试的时候能有印象:这道题目我在五分钟学算法见过!

所以喜欢看题解的读者记得星标一下公众号,五分钟学算法,让算法面试没那么难!

扯远了,来看今天的这道算法题。

这道题目的描述是这样子的:实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

题目很好理解,首先需要弄清楚对称的含义,它隐含了三层意思,即对于树中任意两个对称节点 L 和 R ,一定有:

1、L.val = R.val:即此两对称节点值相等。

2、L.left.val = R.right.val:即 L 的左子节点和 R 的右子节点对称。

3、 L.right.val = R.left.val:即 L 的右子节点和 R 的左子节点对称。

思路也就很简单了,我们可以从底至顶进行递归操作,判断每对节点是否对称,从而判断树是否为对称二叉树。

直接通过图片来看是怎么操作的。

剑指 Offer 28. 对称的二叉树.002

剑指 Offer 28. 对称的二叉树.003

剑指 Offer 28. 对称的二叉树.004

剑指 Offer 28. 对称的二叉树.005

剑指 Offer 28. 对称的二叉树.006

剑指 Offer 28. 对称的二叉树.007

剑指 Offer 28. 对称的二叉树.008

剑指 Offer 28. 对称的二叉树.009

代码如下,两分钟应该能写出来:


// 公众号:五分钟学算法
// 作者:程序员吴师兄

class Solution {
    public boolean isSymmetric(TreeNode root) {
        // 边界情况
        if(root == null) return true;
        // 递归判断左子树和右子树是否对称
        return isSymmetriacalCor(root.left,root.right);

    }
    private boolean isSymmetriacalCor(TreeNode L,TreeNode R){
        // 如果某根子树的左右两子树同时为空,肯定是对称的,直接返回 true
        if(L == null && R == null){
            return true;
        }
        // 说明根子树的左右两子树有某子树为空,某子树有值,不对称,返回 false
        if(L == null || R == null){
            return false;
        }
        // 左子树的值与右子树的值不相等,不对称,返回 false
        if(L.val != R.val){
            return false;
        }
        // 递归的对比当前节点的左子树的左子树与右子树的右子树、左子树的右子树与右子树的左子树是否对称
        return isSymmetriacalCor(L.left,R.right) && isSymmetriacalCor(L.right,R.left);
    }
}

最后小小的总结一下,二叉树具备天然的递归性,往往在处理二叉树的题目时,我们都需要去思考怎么样利用递归,想清楚能解决 50% 的二叉树问题。

好了,今天的文章就到这里,我们下篇文章见,有收获记得点个赞,五分钟学算法,让算法面试没那么难!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 五分钟学算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档