“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一下
-