Leetcode 101. 对称二叉树

118 阅读1分钟

“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”

今天写了二叉树的中序遍历,所以打算把热题100中关于二叉树的题,都解一遍,方便大家专项学习

一、题目描述

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

二、思路分析

  • 这道题可以用递归法去解,也可以用迭代法
  • 如果面试考这道题,两种解法都要会哦!(这里我用迭代法解题,递归的话比较简单,朋友们自行查找吧)
  • 所谓对称就是照镜子一样,左子树的左孩子等于右子树的右孩子
  • 上一题我们用了迭代,这题来用递归解一下

三、AC 代码:

class Solution {
    public boolean isSymmetric(TreeNode root) {
        //递归照镜子
        return check(root,root);
    }
    public boolean check(TreeNode p,TreeNode q){
        //递归结束条件 为空 且相等true反之false
        if(p == null && q == null){
            return true;
        }
        if(p == null || q == null){
            return false;
        }
        //左右值相等,继续递归左子树和右子树
        return p.val == q.val && check(p.left,q.right) && check(p.right,q.left);
    }
}

四、总结:

  • 好了,代码撸完,我们总结一下
    • 理解递归的思想,以及对称的概念

    • 边界条件的判断

    • 递归可能相对难理解,建议画图,或者Debug一下

最后这个算法是Leetcode的第94题,是热题100的第40题,去年我刷了热题100用时一个月左右,接下来我会继续更新,小伙伴可以点赞关注,如果你也在刷热题100的话,希望可以对你有一些启发!